Unit testing methods interfering with each other

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

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

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


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
Finished in 0.259161 seconds.

  1. Error:
    ActiveRecord::RecordNotFound: Couldn’t find Product with ID=1
    active_record/base.rb:428:in find' test/unit/product_test.rb:8:insetup_without_fixtures’
    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:insetup’

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,

OK, found it. Has to do with the fact that Rails 0.14 switched to
transactional fixtures which my MySQL table type did not support.
More details here: http://www.clarkware.com/cgi/blosxom/

– Nicky

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs