Hello all, i have a problem with unit test always here my code for create a table 1 def test_should_create_a_member 2 sp = Member.new(:name => "Arnold", :surname => "Stallone", :street => "My Street", :location => "Washington") 3 assert sp.save # here is failure 4 end if i make the test, its ok, without failures then i write next test: 1 def test_name_should_be_unique 2 sp = Member.new(:name => "Silvester", :surname => "Mc Name", :street => "Our Street", :location => "Customs") 3 assert sp.save 4 sp = Member.new(:name => "Silvester", :surname => "Field", :street => "This Street", :location => "Living") 5 assert !sp.save 6 end if i make tesst there ist 1 failure on line 3 in test_should_create_a_member. can someone see any false, why this is so now? please help
on 2009-02-21 09:39
on 2009-02-21 11:03
edit: when i type for line 3 "assert !sp.save" there is no failure, but then the test is not right, or?
on 2009-02-21 15:34
Hello Guy wrote: > edit: when i type for line 3 "assert !sp.save" there is no failure, but > then > the test is not right, or? All test cases follow some variation this pattern: assemble - put together the objects you need activate - the "money line" - the one that calls production code to test assert - check the money line did the right thing. Your test has two money lines, but that's not the actual problem. The problem is assert() sucks, and does not tell you what's wrong. To test "did my object save correctly?", always use this: sp.save! # with the bang ! never this: assert sp.save The reason is the first one will tell you what is going wrong. Maybe your new() arguments do not satisfy one of your validations. -- Phlip