A Galeria de Fixtures também está disponível como documento PDF e um wiki FitNesse online. Acesse http://gojko.net/fitnesse/fixturegallery para mais informações.
Página anterior: ActionFixture Próxima página: TableFixture Página acima: Fixtures básicas de FIT

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 objeto Type ou Class que 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


Personal Tools