Lindsay Boyd
2006-May-22 11:53 UTC
[Rails] Agile Web Dev unit test fails with fixture instance variable
I''m following Agile Edition 1. On page 148 it suggests using instance variables named after the fixture, for example: assert_equal @version_control_book.id, @product.id When I introduce this type of instance variable into my test, I get the following error: 1) Error: test_not_owner(GroupTest): RuntimeError: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id test/unit/group_test.rb:8:in `setup_without_fixtures'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/fixtures.rb:548:in `setup'' Line 8: @group = Group.find(@alice_group.id) where alice_group is my Group fixture. I know there are a few issues with the testing section of the Agile book - have I just hit one? thanks Lindsay. -- Posted via http://www.ruby-forum.com/.
cremes.devlist@mac.com
2006-May-22 12:50 UTC
[Rails] Agile Web Dev unit test fails with fixture instance variable
On May 22, 2006, at 6:53 AM, Lindsay Boyd wrote:> I''m following Agile Edition 1. On page 148 it suggests using instance > variables named after the fixture, for example: > > assert_equal @version_control_book.id, @product.id > > When I introduce this type of instance variable into my test, I get > the > following error: > > 1) Error: > test_not_owner(GroupTest): > RuntimeError: Called id for nil, which would mistakenly be 4 -- if you > really wanted the id of nil, use object_id > test/unit/group_test.rb:8:in `setup_without_fixtures'' > /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/ > active_record/fixtures.rb:548:in > `setup'' > > Line 8: > > @group = Group.find(@alice_group.id) > > where alice_group is my Group fixture. > > I know there are a few issues with the testing section of the Agile > book > - have I just hit one?Yes, this is an artifact of the book coming out while Rails was still in flux. The right way to reference a fixture is to use alternative syntax like so: fixture_name(:fixture_element) Using the depot application as the example, the book uses the old syntax (like on page 148). Instead of @version_control_book.id the syntax should be products(:version_control_book).id. In your specific example, the code should probably be groups (:alice_group).id (assuming you have a line "fixtures :groups" in your test). Hope this helped. cr