KISS - Keep it simple, stupid!

Tradução do Akita do “Por que o Git é melhor que X”

postado por João José Pedrini em 04/12/2008 12:46:42

Recentemente houve uma discussão no grupo de CakePHP para definirmos um repositório de projetos, extensões e mini-aplicativos do grupo brasileiro. Houve bastante discussão e eu acabei falando um pouco sobre Git e conseqüentemente de GitHub.

Pois bem, estava lendo meus feeds e li a notícia de uma super tradução do Fábio Akita (para falar a verdade, eu recomendo todos a lerem o blog AkitaOnRails!). Recentemente o Scott Chacon lançou um artigo/site (Why Git is Better than X) explicando, de acordo com sua opinião, os pontos positivos do Git perante os outros sistemas de controle de versão. Parabéns e obrigado Fábio Akita!

A versão em português pode ser encontrada em http://pt.whygitisbetterthanx.com/.

Tags: , , ,
Topo

Sem comentários

Fixtures, preparando os ingredientes

postado por João José Pedrini em 19/09/2008 10:52:38

Quando você vai reunir os ingredientes de alguma receita, você preza em manter sempre um padrão. A mudança de um único ingrediente pode resultar no fracasso da sua receita. Imagine você mudar a farinha de trigo por farinha de mandioca (eu sei, são totalmente diferentes, mas quero que peguem a idéia), o bolo vai ser uma droga. Ter os ingredientes certos é fundamental para o resultado.

Quando estamos num ambiente de testes automatizados, temos que nos preocupar com a preparação dos dados de entrada. Ambientes mal preparados podem acarretar em testes não conclusivos ou que falhem de uma hora para outra. Os testes devem começar em um ambiente fixo e conhecido para que possamos prever o comportamento dos testes e funções que estamos programando. É ai que entram os Fixtures.

Fixtures são uma solução de automação na preparação do ambiente de teste. Ele garante que todos os testes serão rodados com um conjunto de dados iniciais padrão, garantindo assim a integridade dos testes. Para isto, a cada inicio de testes, todos os dados são reiniciados e preparados. Portanto, quando estamos trabalhando num banco de dados, o fluxo de um teste começaria com um TRUNCATE da tabela, INSERT dos dados pré-estabelecidos e execução dos ASSERTS.

No CakePHP há uma implementação própria de Fixtures que é muito simples de usar. Para cada Model que você pretende definir o ambiente inicial, você cria um arquivo /app/tests/fixtures/nomemodel_fixtures.php contendo a seguinte estrutura:

class NomemodelFixture extends CakeTestFixture {
	var $name = 'Nomemodel';
	var $fields = array (
		'id' => array('type'=>'integer', 'key'=>'primary',
		// todos os campos do model
		// Você pode utilizar a geração automágica do
		//CakePHP através do comando Shell Schema.
	);
	var $records = array(
		array('id'=>1,'campo_1'=>'Olá'),
		array('id'=>2,'campo_1'=>'Hi')
	);
}

A definição é bastante intuitiva, a variável $fields corresponde à estrutura do banco, nela é definida as características da tabela e seus respectivos campos. E os $records são as linhas da tabela, corresponde aos dados que serão inseridos. Nesta variável há a possibilidade de se inserir quantos registros forem necessários.

No seu CakeTestCase basta inserir uma variável $fixtures contendo uma array com todos os fixtures que você deseja utilizar. Concatene um “app.” para especificar que estamos tratando de um fixture de nossa aplicação. Para exemplificar:

class NomemodelTestCase extends CakeTestCase {
	var $fixtures = array ('app.nomemodel');
}

Bem pessoal, o básico de fixture é isso. Portanto, quando forem cozinhar seus testes, lembrem-se de sempre limpar sua cozinha e preparar seus ingredientes.

Tags: , ,
Topo

4 Comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil