Trace: » tablefixture » variaveisdemarcacao » argumentosparafixtures » webtest » actionfixture » calculatefixture » fixturesbasicasdefit » conceitosimportantes » simbolosemfixtures » rowfixture
RowFixture
RowFixture testa listas de objetos dinâmicas. Ela compara a lista esperada (tabela em FitNesse) com o resultado real (do código da fixture) e relata qualquer item a mais ou a menos.
Formato da Tabela
A primeira linha da tabela é o nome da fixture. A segunda linha descreve a estrutura de objetos da lista (as propriedades ou métodos que você quer verificar). Todas as linhas seguintes descrevem objetos esperados da lista.
!include -seamless SetUpFixture !|RowFixtureTest| |name|post code| |John Smith|SW4 66Z| |Michael Jordan|NE1 8AT|
Classe de suporte (fixture)
A classe da fixture deve estender fit.RowFixture e sobrescrever os dois métodos:
getTargetClass-- retorna o objetoTypeouClassque representa o tipo de objeto que o array contém.query-- retorna o array real de objetos a serem verificados.
Código-fonte em Java
package info.fitnesse.fixturegallery;
import info.fitnesse.fixturegallery.domain.Player;
import fit.RowFixture;
public class RowFixtureTest extends RowFixture{
public Class getTargetClass() {
return Player.class;
}
public Object[] query() throws Exception {
return Player.players.toArray();
}
}
Código-fonte em .Net
using System;
using System.Collections.Generic;
using System.Text;
namespace info.fitnesse.fixturegallery
{
public class RowFixtureTest: fit.RowFixture
{
public override Type GetTargetClass()
{
return typeof(Player);
}
public override object[] Query()
{
return Player.players.ToArray();
}
}
}
Código-fonte em Python
from fit.RowFixture import RowFixture
from info.fitnesse.fixturegallery.domain.Player import Player
class RowFixtureTest(RowFixture):
def getTargetClass(self):
return Player
def query(self):
return list(Player.players) #< Return copy of players
Código-fonte em Smalltalk
'From VisualWorks®, 7.6 of March 3, 2008 on June 27, 2008 at 3:36:40 pm'!
Info.Fitnesse.Fixturegallery defineClass: #RowFixtureTest
superclass: #{Fit.RowFixture}
indexedType: #none
private: false
instanceVariableNames: ''
classInstanceVariableNames: ''
imports: ''
category: ''!
!Info.Fitnesse.Fixturegallery.RowFixtureTest methodsFor: 'abstracts'!
query
^Player players! !
!Info.Fitnesse.Fixturegallery.RowFixtureTest methodsFor: 'accessing'!
targetClass
^Player! !
Observações
Se o objeto possui atributos que podem ser considerados parte de sua identidade (como uma chave primária), liste-os à esquerda, antes dos atributos auxiliares. Isto tornará as mensagens de erro mais fácil de ler. Considere a Figura 1: RowFixture mapeia linhas para objetos da esquerda para direita -- o erro é absolutamente o mesmo em ambos os casos, porém devido a ordem das colunas a saída de um teste identifica claramente a célula com problemas enquanto o outro apenas relata que uma linha inteira está faltando.
Figura 1: RowFixture mapeia linhas para objetos da esquerda para direita
O método query não permite passar nenhum argumento extra. Para mais informações sobre como parametrizar esta lista, veja Argumentos para Fixtures .
A ordem dos elementos numa lista é irrelevante e RowFixture vai ignorá-la.
A implementação em Smalltalk procurará por informaçãos sobre tipos passando #signatureFor: para a classe de destino.
Utilização
Use RowFixture para testar e verificar listas de objetos, ou para executar um método para cada objeto da lista.
Não use RowFixture quando a ordem dos elementos for relevante. Neste caso use ArrayFixture (veja ArrayFixture).
Página anterior: ActionFixture Próxima página: TableFixture Página acima: Fixtures básicas de FIT

