所以,我在这里得到了一个非常奇怪的错误......我试图隔离它,但它是准间歇性的。我有点想知道它是否与使用带有javascript驱动程序的capybara有关,因为这不是在我的非水豚测试中发生的。这是:
Failure/Error: @existing_user, household = create_new_user_and_household
ActiveRecord::AssociationTypeMismatch:
User(#57141560) expected, got User(#42098260)
# ./app/models/household.rb:64:in `block in create_new_household'
# ./app/models/household.rb:62:in `new'
# ./app/models/household.rb:62:in `create_new_household'
# ./spec/support/spec_helpers.rb:55:in `create_new_user_and_household'
# ./spec/integration/accepting_an_invitation_spec.rb:21:in `block (4 levels) in <top (required)>'
以下是相关区块:
household = Household.new attributes, do |h|
h.account = user.account || Account.create(user: user)
end
非常基本,在rails控制台中手动执行时效果很好。
我不知道还有什么能告诉你们......但我很乐意提供更多信息。
我正在使用rspec
进行所有测试。
答案 0 :(得分:1)
正如Frederick Cheung指出的那样,答案是在cache_classes
中将true
设置为test.rb
。
这应该与spork发生冲突,这就是为什么我被告知首先将其关闭的原因 - 因为你希望spork重新加载你的模型以及什么时候你再进行另一次测试。解决方案是将cache_classes
设置为true
,但也将ActiveSupport::Dependencies.clear
放入spork prefork块。
参考文献: