[英]How can I add Rack Middleware to the test environment in Rails?
我目前正在使用Capybara测试Rails应用。 此外,一旦相关源文件发生更改,我正在使用Guard及其扩展名guard-livereload来自动重新加载浏览器。
由于save_and_open_page
方法无法正确显示样式表,因此我将此解决方案应用于该问题,其中将临时视图转储capybara.html
放置在/public/
文件夹中,以确保资产的可访问性。
现在,由于LiveReload就像开发中的魅力一样工作,我想在功能测试期间使用它来自动重新加载/public/capybara.html
而不是/public/capybara.html
打开它。
由于某种原因,我只能将负责重新加载页面的Rack中间件插入到developerent-environment内的中间件堆栈中,而不能将其插入到test-environment中。 我使用以下代码进行插入:
/config/environments/development.rb
Rails.application.configure do
config.middleware.insert_after ActionDispatch::Static, Rack::LiveReload
end
在/config/environments/test.rb
使用相同的方法时,会发生以下错误
myApp/config/environments/test.rb:44:in `block in <top (required)>': uninitialized constant Rack::LiveReload (NameError)
由于我对Rails还是很陌生,所以我真的不知道从哪里开始。 据我所知,尝试手动要求该文件实际上不是The Rails Way TM 。 那么,如何解决这个问题呢?
提前致谢。
我相信您应该在Rack::LiveReload
的测试环境中包括Rack::LiveReload
Gemfile
:
group :development, :test do
gem "rack-livereload"
end
在您的Gemfile中,您可能只在开发组中加载了rack-livereload gem-为此,您需要在开发和测试组中加载它。 话虽如此,您确实希望测试环境尽可能地模仿生产,因此在测试环境中运行机架交付负载通常不是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.