我正在尝试为我的Image对象进行一些测试创建一些记录。然而,似乎他们不坚持:
describe Image do
before(:all) do
for i in 0..2
FactoryGirl.create(:image)
end
puts Image.count
end
it "blah blah blah" do
puts Image.count
end
it "blah blah blah 2" do
puts Image.count
end
在上面的示例中,对Image.count
的第一次调用返回3;后续调用返回0.当我使用before(:each)
时,该示例有效,但我觉得before(:all)
应该是我想要的。
答案 0 :(得分:3)
你很少想在之前使用(:all)。你想在之前使用(:每个)。 before(:all)在context / describe块开始时运行,之前(:each)在每个内部规范之前运行。这就是为什么第二次和第三次通话你得到0的原因。
还有一个重要原因是您不希望在之前使用(:all),因为您不希望测试一起运行。这意味着示例被绑定在一起,这在测试中是绝对禁止的。你应该真的只使用before(:all)来设置全局协作者的东西,而不是你在示例中描述的东西。
简答:使用之前(:每个)