当我执行测试时,如何防止 运行 的初始化脚本?
How do I prevent an initializer script from running when I execute a test?
我使用的是 Rails 5.1 环境。我有一个位于
的脚本
config/initializers/websockets.rb
当我的服务器启动时,这是 运行,但是,我不希望这个脚本在我执行测试时 运行,例如...
localhost:mine satishp$ rails test test/lib/websocket_client_test.rb
如何在我执行测试或至少执行此特定文件时阻止初始化程序脚本 运行ning?
将初始化程序脚本移出目录,然后再将其移回。
localhost:mine satishp$ mv $RUBY_DIRECTORY/config/initializers/websockets.rb /home/satishp && \
rails test test/lib/websocket_client_test.rb && \
cp /home/satishp/websockets.rb $RUBY_DIRECTORY/config/initializers/websockets.rb
初始化程序只是 Ruby 脚本,在 Rails 启动时执行,因此您可以在其中放入任何您想要的代码。特别是,您可以查看 Rails.env
:
if(!Rails.env.test?)
# Do whatever needs to be done...
end
或环境变量:
if(!ENV['SUPPRESS_WEB_SOCKET_INIT'])
#...
end
然后在 运行 测试时设置 SUPPRESS_WEB_SOCKET_INIT
环境变量(如果更合适,也可以反转逻辑)。
虽然这些都是钝器,因此您可能需要重新考虑您的方法。也许在第一次需要时初始化你的 websocket 东西然后设置一些模拟来替换你测试中的功能会更有意义。
我使用的是 Rails 5.1 环境。我有一个位于
的脚本config/initializers/websockets.rb
当我的服务器启动时,这是 运行,但是,我不希望这个脚本在我执行测试时 运行,例如...
localhost:mine satishp$ rails test test/lib/websocket_client_test.rb
如何在我执行测试或至少执行此特定文件时阻止初始化程序脚本 运行ning?
将初始化程序脚本移出目录,然后再将其移回。
localhost:mine satishp$ mv $RUBY_DIRECTORY/config/initializers/websockets.rb /home/satishp && \
rails test test/lib/websocket_client_test.rb && \
cp /home/satishp/websockets.rb $RUBY_DIRECTORY/config/initializers/websockets.rb
初始化程序只是 Ruby 脚本,在 Rails 启动时执行,因此您可以在其中放入任何您想要的代码。特别是,您可以查看 Rails.env
:
if(!Rails.env.test?)
# Do whatever needs to be done...
end
或环境变量:
if(!ENV['SUPPRESS_WEB_SOCKET_INIT'])
#...
end
然后在 运行 测试时设置 SUPPRESS_WEB_SOCKET_INIT
环境变量(如果更合适,也可以反转逻辑)。
虽然这些都是钝器,因此您可能需要重新考虑您的方法。也许在第一次需要时初始化你的 websocket 东西然后设置一些模拟来替换你测试中的功能会更有意义。