3

我希望我的 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:<RSpec::Core::ExampleGroup::Nested_1:0x007fd1f11f7578> 的未定义方法“fixtures”

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

4

1 回答 1

1

fixtures是一种 Rails 方法(不是 RSpec),afaik 实际上并没有加载固定装置 - 只是注册它们以便稍后加载。

一个类方法,因此它必须在类中运行(ExampleGroup由 describe 返回),而不是在其中评估 、 等的before实例it

你有config.use_transactional_fixtures = truespec_helper.rb 吗?

于 2012-10-12T02:51:36.047 回答