2

我正在尝试为我的 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)应该是我想要的。

4

1 回答 1

3

你很少想要使用 before(:all)。您想使用 before(:each)。before(:all) 在 context/describe 块开始时运行, before(:each) 在其中的每个规范之前运行。这就是为什么您在第二次和第三次调用中得到 0 的原因。

还有一个你不想使用 before(:all) 的重要原因是你不希望你的测试一起运行。这意味着示例绑定在一起,这在测试中是绝对禁止的。你真的应该只使用 before(:all) 来设置全局协作者,而不是你在示例中描述的东西。

简短答案:使用 before(:each)

于 2013-10-10T20:02:48.847 回答