这个问题是关于从 rspec 环境启动外部项目的 rails 服务器。
有2个项目。
我正在尝试测试这两个 rails 项目之间的 API 交互,我想设置 rspec 以便我可以在 BackOffice 项目中编写和维护我的规范文件。这些规范将启动 ApiServer rails 服务器,然后执行测试。
我的问题是关于启动 ApiServer rails 服务器。查看 rails 应用程序初始化文件后,我认为我必须向“config/environment”添加一个要求。
但是当我插入 BackOffice/spec/spec_helper.rb
require File.expand_path('../../../ApiServer/config/environment', __FILE__)
我收到错误
`initialize!': Application has been already initialized. (RuntimeError)
# Backtrace to the file:
# ApiServer/config/environment.rb
# Line:
# Rails.application.initialize!
我还尝试简单地在反引号中调用以下内容
`cd /api/path; bundle exec rails s -p 3002`
但得到了同样的错误
然后我从 Capybara 源代码中得到了灵感,并需要“ApiServer/application”,然后我就可以创建一个
ApiServer.new
对象,但只要我打电话 initialize!
在它上面我得到了同样的信息。任何帮助是极大的赞赏。干杯
最佳答案
实际上,第二个应用程序只不过是一个外部服务,最好为测试 stub 。
Thoughtbot 发表了一篇关于使用 vcr
的好文章。 gem 来模拟外部 Web 服务:
https://robots.thoughtbot.com/how-to-stub-external-services-in-tests
关于ruby-on-rails - Rspec:运行外部 Rails 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32393199/