What is the correct behaviour when manually specifying which fixtures to load?

3 views
Skip to first unread message

Daniel Abrahamsson

unread,
Sep 20, 2011, 6:24:08 AM9/20/11
to rubyonra...@googlegroups.com
I have a problem with fixtures not being removed between tests and would like to know if this is expected behavior or not.

For example, say that I have a model Car, and a car.yml fixtures file. I have two test cases CarTest and DealerTest. In the first test,
I want to use fixtures, so I define it like this:

class CarTest< ActiveSupport::TestCase
  fixtures :cars
  
  test "Car fixtures should have been loaded" do
    assert_equal NUMBER_OF_FIXTURES, Car.count
  end
end

In my second test case, DealerTest, I do not want to use the car fixtures, but want to create some of my own.
class DealerTest< ActiveSupport::TestCase
  
  test "No Cars should be in the database" do
    assert_equal 0, Car.count
  end
end

Now, if I run this test individually, it works fine. But if I run it using rake test:units, it fails. The car fixtures are left over from the previous test. 

Is this how it is supposed to work?

Colin Law

unread,
Sep 20, 2011, 9:25:08 AM9/20/11
to rubyonra...@googlegroups.com

I think you are misinterpreting the symptom. I *think* it is not that
the fixtures are left over from the previous test, but that when using
rake test it forces all fixtures to be reloaded for each test. If I
am right then the question is "how to stop rake test from loading
fixtures". I do not know the answer however. I stopped using
fixtures some time ago, I think the consensus is that fixtures are a
Bad Thing and that factories are the way to go. I tend to agree.

Colin

Reply all
Reply to author
Forward
0 new messages