After let (: user) {create (: user)} # => RecordNotFound

I have a test case:

describe User do
  let(:user) { create(:user) } # FactoryGirl
  it { User.count == 1 }  
end

And setting:

RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
  config.before(:suite) { DatabaseCleaner.strategy = :truncation }
  config.before(:each) { DatabaseCleaner.start }
  config.after(:each) { DatabaseCleaner.clean }
  config.use_transactional_fixtures = false
end

Why doesn't it work? How to use let and get really saved records?

+3
source share
1 answer

let calls are lazy-evaluated, they do not start unless a specific method is called:

describe User do
  subject { user }
  let(:user) { create(:user) } # FactoryGirl
  it { … }  
end

As an alternative, use let!for preconditions that are always evaluated:

describe User do
  let!(:user) { create(:user) } # FactoryGirl
  it { … }  
end
+5
source

All Articles