unit testing methods interfering with each other

Nickolay Kolev
2005-12-07T13:54:52Z

Hi all,

I am following the Agile Rails book and have a problem with unit
testing. Here is my products test file:

require File.dirname(__FILE__) + ''/../test_helper''

class ProductTest < Test::Unit::TestCase

   fixtures :products

   def setup
     @product = Product.find 1
   end

   def test_load_in_db
     assert_kind_of Product, @product
     assert_equal 29.95, @product.price
   end

   def test_destroy
     @product.destroy
     assert_raise(ActiveRecord::RecordNotFound) { Product.find
@product.id }
   end

end

According to the book this should work, as different tests are not
dependent on each other, e.g. the destroy test should be independent
of the load_in_db test. I do howeveg get this after running the test:

:!ruby test/unit/product_test.rb
Loaded suite test/unit/product_test
Started
.E
Finished in 0.259161 seconds.

   1) Error:
test_load_in_db(ProductTest):
ActiveRecord::RecordNotFound: Couldn''t find Product with ID=1
     /opt2/local/lib/ruby/gems/1.8/gems/activerecord-1.13.0/lib/
active_record/base.rb:428:in `find''
     test/unit/product_test.rb:8:in `setup_without_fixtures''
     /opt2/local/lib/ruby/gems/1.8/gems/activerecord-1.13.0/lib/
active_record/fixtures.rb:522:in `setup''
     /opt2/local/lib/ruby/gems/1.8/gems/activerecord-1.13.0/lib/
active_record/fixtures.rb:520:in `setup''

2 tests, 1 assertions, 0 failures, 1 errors

If I remove the destroy test everything works as expected?

Any ideas as to why this is happening?

Many thanks in advance,
Nicky