繁体   English   中英

如何在Rails的测试环境中添加Rack Middleware?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM