【问题标题】:How can I use rspec with YAML fixtures that get cleaned up?如何将 rspec 与已清理的 YAML 固定装置一起使用?
【发布时间】:2012-10-11 21:41:00
【问题描述】:

我希望我的 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 块中),它加载我的三明治和调味品,但在事务之外,因此被提交。好吧,看起来是这样的;可以确定的是,测试完成后我的灯具还在数据库中。

我想也许我可以在事务内部的before 块中调用fixtures,但后来我得到了

NoMethodError: 未定义的方法 `fixtures' for <:core::examplegroup::nested_1:0x007fd1f11f7578>

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

【问题讨论】:

    标签: ruby-on-rails rspec fixtures


    【解决方案1】:

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

    一个类方法,所以它必须在类中运行(describe 返回的ExampleGroup)而不是在其中评估beforeit 等的实例.

    你在 spec_helper.rb 中有 config.use_transactional_fixtures = true 吗?

    【讨论】:

    • 我确实有配置参数,它在事务中运行测试,清理我的测试所做的任何事情,除了固定装置。现在确实如此,固定装置只是稍后加载固定装置,所以......我想知道它什么时候加载它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2012-04-14
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多