【发布时间】:2011-04-01 22:13:33
【问题描述】:
我在运行所有规范时遇到问题。
ActiveRecord::AssociationType 不匹配: Affiliate(#2154746360) 预期,得到 Affiliate(#2199508660)我的模型似乎被加载了两次。
我已经隔离了 Rack::Test 定义“app”方法的要求引入的问题。
require 'rack/test'
include Rack::Test::Methods
# app method is needed for rack-test
def app
Rails.application
end
如果我注释掉 Rails.application 我的机架规格不起作用,但我的所有其他规格都可以正常工作。在“app”方法中使用Rails.application会引入上述错误。
如果我单独运行我的规格,一切正常。我正在使用 Spork 预加载我的环境,我认为模型首先由 Spork 加载,然后在我的“应用程序”方法中调用 Rails.application 时重新定义它们。
关于如何解决此问题的任何想法?我不确定是否有另一种方法可以在“app”方法中设置我的 Rails 应用程序。
【问题讨论】:
-
我们遇到了完全相同的问题,但未能成功解决。你有运气吗?
-
在这个问题上,factory_girl Google Group 似乎有一些行动:groups.google.com/group/factory_girl/browse_thread/thread/…
-
迈克尔,到目前为止我还没有运气。我刚刚避免使用我的其他规范运行有问题的规范。这是一种痛苦。
-
我确实最终解决了这个问题,但我不知道重构中的哪些变化起到了作用。我认为问题可能是我的 Rspec 配置块在 Spork 的 prefork 之外,但这并不适合我。如果它有帮助,我可以检查我的更改并尝试找出实际修复它的内容。
标签: ruby-on-rails rspec spork