27
Set 08

Os testes vivem no diretório test dentro da aplicação rails. Dentro deste diretório, há 4 sub-diretórios; um para os testes de controller (funcional - functional), um para testes de modelo (unitários - unit), um para objetos mock (mocks) e um que apenas guarda os dados de exemplo (fixtures).

 

Para rodar estes testes, você simplesmente roda o script de teste diretamente:

ruby test/unit/my_good_old_test_unit.rb

 

Outra forma de rodar seus testes é:

  • rake test_functional => para todar os testes de controller
  • rake test_units => para rodar os testes de modelo.

rake db:test:prepare  => prepara o banco de teste e carrega o esquema.

 

Fixtures é uma palavra-fantasia para "amostra de dados". Elas lhe permitem popular seu banco de teste com dados predefinidos antes de rodar seus testes. Fixtures são bancos independentes e assumem um de dois formatos: YAML ou CSV. Você pode encontrá-las no diretório test/fixtures. Você pode usar código ruby (entre  <%%> para gerar seus dados).

  • YAML:  Formato bastante amigável, possui extensão .yml. Os registros são organizados cada um em um parágrafo, e cada campo em uma linha. Exemplo:
# comentário
david:
id: 1
name: David Heinemeier Hansson
birthday: 1979-10-15
profession: Systems development

steve:
id: 2
name: Steve Ross Kellock
birthday: 1974-09-27
profession: guy with keyboard

  • CSV: Fixtures também podem ser descritas usando um formato de arquivo no qual os valores são separados por vírgula. Esses arquivos ficam no mesmo diretório test/fixtures, mas possuem a extensão .csv. A primeira linha é o cabeçalho. Consiste  em uma lista de campos separados por vírgula. Um registro por linha.Exemplo:

     

     

    id, username, password, stretchable, comments
    1, sclaus, ihatekids, false, I like to say ""Ho! Ho! Ho!""
    2, ebunny, ihateeggs, true, Hoppity hop y'all
    3, tfairy, ilovecavities, true, "Pull your teeth, I will"


Fixtures em Ação

Você precisa deixar claro que deseja carregar suas fixtures usando o método fixtures dentro do seu TestCase. Um teste de modelo user poderia ser assim:


# Allow this test to hook into the Rails framework.
require File.dirname(__FILE__) + '/../test_helper'

class UserTest < Test::Unit::TestCase
fixtures :users

# Count the fixtures.
def test_count_my_fixtures
assert_equal 5, User.count
end
end

 

Usando o método fixtures e colocando o símbolo do nome do modelo, o Rails irá automaticamente carregar as fixtures ao iniciar cada método de teste.

fixtures :users

 Fonte: GuiaRails

publicado por dessa às 23:26
tags:

24
Set 08

Há vários tipos diferentes de assertions que você pode usar. Segue uma lista completa de assertions que vêm junto com o test/unit. A [msg] é uma string opcional para você tornar as suas mensagens de falha mais claras. * Também é possível criar suas próprias assertions! * 

assert( boolean, [msg] )

Garante que o objeto/expressão é verdadeira

assert_equal( obj1, obj2, [msg] )

 Garante que obj1 == obj2 é verdadeiro.

assert_not_equal( obj1, obj2, [msg] )

Garante que obj1 == obj2 é falso.

assert_same( obj1, obj2, [msg] )

Garante que obj1.equal?(obj2)é verdadeiro.

assert_not_same( obj1, obj2, [msg] )

Garante que obj1.equal?(obj2) é falso.

assert_nil( obj, [msg] )

Garante que obj.nil? é verdadeiro.

assert_not_nil( obj, [msg] )

Garante que obj.nil? é falso.

assert_match( regexp, string, [msg] )

Garante que uma string bate com a expressão regular.

assert_no_match( regexp, string, [msg] )

Garante que a string não bate com a expressão regular.

assert_in_delta( expecting, actual, delta, [msg] )

? Garante que os números esperado e atual estão dentro de delta

assert_throws( symbol, [msg] ) { block }

Ensures that the given block throws the symbol.

assert_raises( exception1, exception2, … ) { block }

Ensures that the given block raises one of the given exceptions.

assert_nothing_raised( exception1, exception2, … ) { block }

Ensures that the given block doesn't raise one of the given exceptions.

assert_instance_of( class, obj, [msg] )

Garante que obj é do tipo class.

assert_kind_of( class, obj, [msg] )

Garante que obj é ou herda de class.

assert_respond_to( obj, symbol, [msg] )

Garante que obj possui um método chamado symbol.

assert_operator( obj1, operator, obj2, [msg] )

Garante que obj1.operator(obj2)é verdadeiro.

assert_send( array, [msg] )

Ensures that executing the method listed in array[1] on the object in array[0] with the parameters of array[2 and up] is true. This one is weird eh?

flunk( [msg] )

Garante falha.

  

Fonte: GuiaRails

publicado por dessa às 15:53
tags:

Setembro 2008
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4
5
6

7
8
9
10
11
12
13

14
15
16
17
18
19
20

21
25
26

28
29
30


subscrever feeds
pesquisar
 
Subscrever por e-mail

A subscrição é anónima e gera, no máximo, um e-mail por dia.

blogs SAPO