我正在使用Rails构建JSON API服务,并使用docker在生产环境中运行它。在我的Dockerfile中,我想使用:
RUN bundle install --without development test
我有点担心的是,Gemfile可能包含:development
或:test
中非常重要的内容。
这是一个人为的例子Gemfile
:
# Example situation which works in development and tests but fails in production
group :development, :test do
gem 'rails', '~> 5.1.4'
end
在这种情况下,测试通过就好了,但生产真的会被打破。
所以我正在考虑构建生产容器并使用docker运行它并公开端口进行测试。对该容器使用相同的Rspec type: request
测试真是太棒了。测试运行器和rails服务器可以共享相同的测试数据库。
我如何强制我的Rspec测试不会产生自己的服务器,而是使用已在后台运行的其他服务?
答案 0 :(得分:0)
我过去所做的是构建我的docker容器,然后运行它,等待10秒,然后grep日志以获取应用程序服务器的成功消息。
通常对成功信息的贪婪是足够的 - 你可以做一个简单的烟雾测试,但是你会走上金丝雀部署的道路(这很好,这只是一种不同的心态......)