我通过引入请求和响应模型来重构我的控制器,以执行在presentation之后围绕控制器的一些逻辑。我将所有响应和请求模型分别包含模块响应和请求。应用程序运行完美,但是当我运行测试时,我得到以下错误。
Failure/Error: Unable to find matching line from backtrace
RuntimeError:
Circular dependency detected while autoloading constant Responses::FolderContentResponse
我的目录结构如下:
- app /
- 型号/
- 回复/
注意:我已经看到了与此问题相关的问题,但是,他们的问题似乎与我的问题不相似。在我的情况下,它是随机发生的,只有在运行测试(RAILS TEST ENV)时,应用程序才能正常运行。
module Responses
class ContentResponse
include ActiveAttr::Model
#some attributes
#some methods
end
end
module Responses
class FolderContentResponse < ContentResponse
end
end
FolderContent响应类继承自ContentResponse,后者具有FolderContent其他内容响应使用的更通用的方法。
答案 0 :(得分:13)
这听起来很像是Xavier Noria最近发现的issue。简而言之,即使预先加载所有应用程序代码的设置未激活(需要因为require
而且朋友不是线程安全的),capybara会以多线程模式启动您的应用程序以进行测试
早期版本的rails 4.2已经修复了
config.allow_concurrency = false
test.rb中的应该做的伎俩