使用Spork时如何加载Machinist的蓝图?

Ner*_*ian 5 testing ruby-on-rails spork

使用Spork时如何加载Machinist的蓝图?

宝石:

  • mongoid(2.0.0.rc.6)
  • 水豚(0.4.1.1)
  • 牛排(1.1.0)
  • spork(0.9.0.rc2)
  • rspec(2.4.0)
  • 机械师(2.0.0.beta2)

我在每次验收测试中都会收到此错误:

Machinist::NoBlueprintError:
   No master blueprint defined for class School
Run Code Online (Sandbox Code Playgroud)

所有测试都失败了,因为它没有找到任何蓝图.我在V2上的一些错误(我仍然得到几个没有主蓝图..),但我也得到另一个错误:

Professor Create a new professor
 Failure/Error: click_link("Profesores")
 RangeError:
   0x000000821461e4 is recycled object
Run Code Online (Sandbox Code Playgroud)

我在测试环境中得到了config.cache_classes = false.

两个spec_helper版本:

https://gist.github.com/801814

2po*_*kes 4

只是为了排除明显的情况,您是否在 application.rb 文件中包含了类似的内容:

config.generators do |g|
  g.fixture_replacement :machinist      
end
Run Code Online (Sandbox Code Playgroud)

您还可以在以下位置设置您的蓝图文件:

features/support/blueprints.rb for cucumber   
spec/support/blueprints.rb for rspec
Run Code Online (Sandbox Code Playgroud)

并确保您已包括:

require 'machinist/active_record'
Run Code Online (Sandbox Code Playgroud)

在你的蓝图的顶部。

另外,当您启动并运行它时,还要注意一下。Machinist 缓存了大量对象以使其运行速度更快,但当不断尝试清除数据库时,它有时可能会让您出错。如果遇到问题,您可以通过将其添加到 config/environments/test.rb 文件来关闭 Machinists 缓存:

Machinist.configure do |config|
  config.cache_objects = false
end
Run Code Online (Sandbox Code Playgroud)