On Feb 24, 2011, at 12:36 PM, Fearless Fool wrote:

> A little additional information: every time I run the tests, it creates 
> a new PremiseGroup model.  Shouldn't the db get rolled back between 
> tests?
> 
> Here is PremiseGroup, listed here in its entirety:
> 
>  class PremiseGroup < ActiveRecord::Base
>    has_many :premise_group_members, :dependent => :destroy
>    has_many :premises, :through => :premise_group_members
>    RESIDENTIAL = self.create(:name => "residential")

^^ this is probably the problem ^^

This line creates a new record in the database every time premise_group.rb is 
evaluated by the Ruby interpreter. This happens as the app is being 
bootstrapped and outside any transactions controlled by the Rails testing 
infrastructure (which RSpec sits on top of).

Options include making that a method instead of a const:

def self.residential
  find_or_create_by_name(:name => "residential")
end

HTH,
David

>  end
> 
> When I put in a debugging statement:
> 
>  before(:each) do
>    $stderr.puts("PremiseGroup count = #{PremiseGroup.count}"
>  end
> 
> ... it reports that there are 151 PremiseGroups, then 152 on the next 
> run, then 153 on the next.  Naturally, calling 'rake db:test:prepare' 
> resets it, but shouldn't the database be rolled back between tests 
> regardless?  I'm not 100% sure this is the cause of my problems, but it 
> smells like it...
> 
> -- 
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to