我正在使用Rails 5.1环境。我有一个脚本位于
config/initializers/websockets.rb
这是在我的服务器启动时运行的,但是,我不希望在执行测试时运行此脚本,例如......
localhost:mine satishp$ rails test test/lib/websocket_client_test.rb
如何在执行测试时阻止初始化程序脚本运行,或至少阻止此特定文件运行?
答案 0 :(得分:1)
初始化程序只是在Rails启动时执行的Ruby脚本,因此您可以在其中放置所需的任何代码。特别是,您可以查看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东西更有意义,然后设置一些模拟来替换测试中的功能。
答案 1 :(得分:0)
将初始化程序脚本移出目录,然后再将其移回。
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