Trace: » subsetfixture » markupvariables » fixturesdafitlibrary » combinationfixture » arrayfixture » setupfixture » fit_framework_implementation_differences » introducao » importantconcepts » flowmode
Flow Mode
Se uma DoFixture ou SequenceFixture é carregada como a primeira tabela de uma página, ela toma conta de como a página toda é processada. Isto permite que você quebre a tabela de teste em múltiplas tabelas, tornando os testes mais legíveis.
!|info.fitnesse.fixturegallery.DoFixtureTest| |fill|10|times with|x| |check|char at|4|x| |set list|A,B,C,D| |show|char at|2|
Quando uma tabela é quebrada assim, cada sub-tabela é primeiro procurada como um método da fixture que controla o flow mode. Se o método não existir, uma outra fixture é carregada como se o flow mode não existisse. Isto permite escrever testes que usem métodos na DoFixture para implementar workflows como estórias, mas ainda ssim usar os benefícios de uma abordagem mais estruturada quando isto fizer mais sentido. DoFixture até te ajuda com isso: se o método em flow mode retorna uma instância de uma classe fit.Fixture ou uma de suas subclasses, o resto da tabela é processado como se tivesse sido escrita para aquela fixture. Então você pode usar um método na DoFixture para iniciar outra fixtures, preparar o contexto ou limpá-lo. Se o método em flow mode retorna um array ou lista de objetos, a tabela é analisada como se houvesse escrito uma ArrayFixture . Este é um exemplo de como usar uma fixture embutida e uma conversão de array:
!|info.fitnesse.fixturegallery.DoFixtureFlowTest| !3 The following table is executed by an embedded !-SetUpFixture-! |prepare players| |player|post code|balance| |John Smith|SW4 66Z|10.00| |Michael Jordan|NE1 8AT|12.00| !3 The following table is executed by an !-ArrayFixture-! |list players| |name|post code|balance| |John Smith|SW4 66Z|10.00| |Michael Jordan|NE1 8AT|12.00|
Código-fonte em Java
package info.fitnesse.fixturegallery;
import info.fitnesse.fixturegallery.domain.Player;
import java.util.List;
import fit.Fixture;
import fitlibrary.DoFixture;
public class DoFixtureFlowTest extends DoFixture{
public Fixture preparePlayers(){
return new SetUpFixtureTest();
}
public List<Player> listPlayers(){
return Player.players;
}
}
Código-fonte em .NET
using System;
using System.Collections.Generic;
using System.Text;
using fit;
namespace info.fitnesse.fixturegallery
{
public class DoFixtureFlowTest : fitlibrary.DoFixture
{
public Fixture PreparePlayers()
{
return new SetUpFixtureTest();
}
public List<Player> ListPlayers()
{
return Player.players;
}
}
}
Código-fonte em Python
from fitLib.DoFixture import DoFixture
from fit.RowFixture import RowFixture
from info.fitnesse.fixturegallery.SetUpFixtureTest import SetUpFixtureTest
from info.fitnesse.fixturegallery.domain.Player import Player
import types
class DoFixtureFlowTest(DoFixture):
_typeDict = {}
_typeDict["preparePlayers.types"] = [ SetUpFixtureTest ]
def preparePlayers(self):
return SetUpFixtureTest()
_typeDict["listPlayers.types"] = [ "$Array" ] #< ACTUALLY: List of Players
def listPlayers(self):
# -- DESIRED: return Player.players
# But need to add type hints for list.scalarType .
return ( Player.players, Player._typeDict )
# ALTERNATIVES:
# return RowFixture(Player.players, Player._typeDict)
# return ArrayFixture(Player.players, Player._typeDict)
Código-fonte Smalltalk
'From VisualWorks®, 7.6 of March 3, 2008 on June 27, 2008 at 3:36:37 pm'!
Info.Fitnesse.Fixturegallery defineClass: #DoFixtureFlowTest
superclass: #{Fitlibrary.DoFixture}
indexedType: #none
private: false
instanceVariableNames: ''
classInstanceVariableNames: ''
imports: ''
category: ''!
!Info.Fitnesse.Fixturegallery.DoFixtureFlowTest methodsFor: 'accessing'!
listPlayers
^Player players!
preparePlayers
^SetUpFixtureTest new! !
Página anterior: Argumentos para Fixtures Próxima página: Target objects Página acima: Conceitos importantes
