terça-feira, 30 de março de 2010

Vai testar? Use fixtures!

Uma prática necessária na hora de trabalhar com testes é trabalhar com fixtures.
Mas o que são fixtures? Fixtures são dados que são usados para se ter um controle total dos testes.
Com fixtures, não precisamos nos preocupar se um teste altera dados do banco por que a cada teste esses dados são renovados.
A implementação de fixtures no cakephp é muito simples, basta criar o arquivo app/tests/fixtures/nome-do-modelo_fixtures.php com a seguinte estrutura:
class Nome-do-modeloFixture extends CakeTestFixture {
 var $name = 'Nome-do-modelo';
 var $fields = array(
  'id' => array('type'=>'integer', 'null' => false, 'default' => NULL, 'key' => 'primary'),
  'descricao' => array('type'=>'string', 'null' => false, 'default' => NULL)
                //aqui são listados todos os campos da tabela
 );
    
 var $records = array( //aqui vai os dados
                array(
                    'id' => 1,
                    'descricao' => 'teste1'
                ),
                array(
                    'id' => 2,
                    'descricao' => 'teste2'
                )
        );
}
Pelo bake, o usuário pode gerar esse arquivo automaticamente, e se já existir a tabela povoada, pode importar os registros facilmente

Agora, no arquivo do teste basta incluir essa fixture com o prefixo 'app.', como por exemplo:
class Nome-do-modeloTestCase extends CakeTestCase {
 var $fixtures = array ('app.Nome-do-modelo');
}

Nenhum comentário: