ruby-on-rails - Rspec:运行外部 Rails 服务器

标签 ruby-on-rails rspec

这个问题是关于从 rspec 环境启动外部项目的 rails 服务器。

有2个项目。

  • 第一个项目充当后台管理办公室,它是用户与网页交互的中心应用程序。我称之为 BackOffice
  • 第二个项目是一个 Json API 服务器,它将通过 json 请求从管理后台接收命令。我称之为 ApiServer

  • 我正在尝试测试这两个 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/

    相关文章:

    ruby-on-rails - 使用 shoryuken 进行后台作业时如何确定并发(线程)?

    ruby-on-rails - Hartl Rails 教程练习 2(第 10.1.1 章)re : partial for sign-up and update form

    ruby-on-rails - 调试 Rspec Postgres 锁定

    ruby - 推广 cucumber / capybara 测试

    ruby-on-rails - rspec Controller 测试中的自定义请求 header 作为 rack.session 传递

    jquery - Ruby on Rails 和 Ajax

    ruby-on-rails - rails : Getting an array of values from a model for a time period

    ruby-on-rails - 使用 SQL 查询(mysql2 类型)获取数据时在 Ruby 中使用分页

    ruby-on-rails - Rspec - 从插件切换到 gems 的问题

    ruby-on-rails - 模拟用户登录 Rspec - 使用 Faraday 和 Github-Api Gems