Testes sem LER
Wednesday, September 5th, 2007Nossa mãe… toda vez que vou fazer teste tenho que digitar assert_algumacoisa1, assert_algumacoisa2…
Assim
A Classe
require 'test/unit' class Numero def initialize(num) @num=num end def tipo (@num%2)?:par:impar end def valor @num end end
O Teste
require 'test/unit' class TestNumero < Test::Unit::TestCase def test_simple assert_equal(:par, Numero.new(3).tipo) assert_equal(:impar, Numero.new(3).tipo) assert_equal(2, Numero.new(3).valor) assert_equal(3, Numero.new(3).valor) end end
Resultado
Loaded suite - Started F Finished in 0.027703 seconds. 1) Failure: test_simple(TestNumero) [-:24]: <:impar> expected but was <:par>. 1 tests, 2 assertions, 1 failures, 0 errors
Cansei…
Recomendo a criação implícita do assert_ via method_missing na classe Test::Unit::TestCase . Exemplo:
Adicionando o facade
require 'test/unit' class Test::Unit::TestCase def method_missing(method_name,*args,&block) send("assert_#{method_name}".to_sym, *args,&block) end end
Agora temos o código mais resumido.
class TestNumero < Test::Unit::TestCase def test_simple equal(:par, Numero.new(3).tipo) equal(:impar, Numero.new(3).tipo) equal(2, Numero.new(3).valor) equal(3, Numero.new(3).valor) end end