2024: Domino Containers - The Next Step. News from the Domino Container commu...
Curso TDD Ruby on Rails #05: Shoulda
1. CURSO DE TESTING OSL
12 – 16 DE ABRIL 2010
Shoulda
Alberto Perdomo
Web: http://albertoperdomo.net
Email: alberto.perdomo@aentos.es
Twitter: @albertoperdomo http://www.aentos.com
2. TEST::UNIT
→ los tests no tienen mucha expresividad
→ las posibilidades son limitadas
→ acabamos probando las mismas cosas una y otra vez
3. SHOULDA
→ librería que “amplía” Test::Unit
→ helpers para contexto y expresividad
→ macros
→ helpers
4. SHOULDA: CONTEXTO Y
EXPRESIVIDAD
class UserTest < Test::Unit::TestCase
context "A User instance" do
setup do
@user = User.find(:first)
end
should "return its full name" do
assert_equal 'John Doe', @user.full_name
end
context "with a profile" do
setup do
@user.profile = Profile.find(:first)
end
should "return true when sent #has_profile?" do
assert @user.has_profile?
end
end
end
end
Produce los siguientes tests unitarios:
"test: A User instance should return its full name."
"test: A User instance with a profle should return true when sent #has_profle?."
6. MACROS PARA ACTIVERECORD
test "a transfer without a from_account should not be valid" do
transfer = Transfer.new(:from_account => nil, :to_account => @account_b, :amount => 100)
assert !transfer.valid?
end
should_validate_presence_of :from_account
7. SHOULDA: MACROS PARA
CONTROLADORES
class PostsControllerTest < ActionController::TestCase
context "on GET to :show for first record" do
setup do
get :show, :id => 1
end
should_assign_to :user
should_respond_with :success
should_render_template :show
should_not_set_the_flash
should "do something else really cool" do
assert_equal 1, assigns(:user).id
end
end
end