【发布时间】:2012-01-21 15:02:09
【问题描述】:
我在 RSpec 中遇到了很长时间的问题,我的模型在 Spork 运行之间没有重新加载。
我最终通过更改config/environments/test.rb 中的以下行来解决此问题:
config.cache_classes = true
成为
config.cache_classes = false
但是...虽然这解决了 RSpec 的问题,但 Cucumber 要求将 cache_classes 设置为 true。 https://rspec.lighthouseapp.com/projects/16211/tickets/165
是否有适用于 RSpec 和 Cucumber 并成功重新加载 RSpec 模型的规范解决方案?
脚注
* 我为使 RSpec 重新加载模型而实施的其他更改包括将以下行添加到 spec_helper.rb:
ActiveSupport::Dependencies.clear
FactoryGirl.reload
如果不设置cache_classes=true 行,这些行都不能解决问题。
【问题讨论】:
-
我从来不需要关闭类缓存来让 spork 正常工作。我确实记得有一次用
Factory.define :foo, :class => Foo定义工厂会阻止 Foo 类被重新加载。指定一个类名而不是实际的类来解决这个问题。 -
Factory girl 和模型重新加载问题之间似乎确实存在关联。当您说“指定一个类名而不是修复该问题的实际类”时,您是什么意思?
-
与其说 :class=> Foo 你可以说 :class=> 'Foo' (或 :class_name => "Foo" - 不记得了)
-
我会试一试——我实际上发现了这个问题,即使与 factory_girl gem 的存在无关
标签: ruby-on-rails-3.1 rspec cucumber spork