如何使用rspec和YAML灯具进行清理?

时间:2012-10-11 21:41:00

标签: ruby-on-rails rspec fixtures

我希望我的rspec测试加载我的YAML灯具,我希望它们在事务中加载,以便它们在每次测试后消失。

describe "the thing I'm testing"
   fixtures :sandwiches, :condiments

   before(:each) do
      # stuff
   end

   it "makes sandwiches"
      # making sandwiches 
   end
end

当调用fixtures时(在describe块中,但不在before块中),它会加载我的三明治和调味品,但在交易之外,如此承诺。好吧,它看起来那样;可以肯定的是,在测试结束后我的灯具仍在数据库中。

我想也许我可以将fixtures的调用放在交易内的before区块中,但后来我得到了

  

NoMethodError:未定义的方法`fixtures'for   < RSpec的::核心:: ExampleGroup :: Nested_1:0x007fd1f11f7578>

所以我想我可以使用DatabaseCleaner,或类似的东西,但是......如果没有它,我不能得到我想要的东西吗?

1 个答案:

答案 0 :(得分:1)

fixtures是一个Rails方法(不是RSpec),afaik,实际上并没有加载灯具 - 只是注册它们以便稍后加载。

是一个类方法,因此它必须在类(由describe返回的ExampleGroup)中运行,而不是before,{{1评估等等。

您在spec_helper.rb中有it吗?