在我的应用中,project
has_many
another_project
。
我有以下测试:
describe 'some test' do
let(:project) { create(:live_project) }
let(:another_project) { create(:another_project, :project => project ) }
# before do
# another_project
# end
it 'does something' do
expect ...
end
end
除非运行注释的代码,否则它将失败。
这似乎很奇怪,因为带有another_project
的行没有任何作用。似乎工厂没有正确初始化,直到有指向它的地方。
可能是什么导致它失败/无法使用/不带注释行的问题?
答案 0 :(得分:1)
似乎工厂没有得到适当的初始化,直到有指向它的地方。
这是一个功能。延迟初始化,它被称为。如果不使用任何东西,为什么要创建它呢?
对于要始终创建的内容,请使用let!
而不是let
。或在before
块中创建它们。