【问题标题】:Trouble starting more than one instance of Sinatra in Cucumber env.rb在 Cucumber env.rb 中启动多个 Sinatra 实例时出现问题
【发布时间】:2014-07-24 18:55:05
【问题描述】:

我正在编写依赖于两个不同 Web 服务的自动化测试,我决定使用两个非常基本的 Sinatra 应用程序来模拟这些测试。但是,我无法在我的 Cucumber env 文件中启动多个 Sinatra 实例。第二个 Sinatra 实例在启动后立即停止。

这是我开始测试时得到的输出的 sn-p

== Sinatra/1.4.5 has taken the stage on 9000 for development with backup from Thin
Thin web server (v1.6.2 codename Doc Brown)
Maximum connections set to 1024
Listening on localhost:9000, CTRL+C to stop

== Sinatra/1.4.5 has taken the stage on 8082 for development with backup from Thin
Thin web server (v1.6.2 codename Doc Brown)
Maximum connections set to 1024
Listening on localhost:8082, CTRL+C to stop
Stopping ...
== Sinatra has ended his set (crowd applauds)

如您所见,第一个服务启动并运行良好,但第二个服务启动正常,但随后立即开始停止

Sinatra 应用程序 1

class MockService1 < Sinatra::Base

  get '/some/endpoint' do
      response =
        {
            enabled: false
        }
  end

end

Sinatra 应用 2

class MockService2 < Sinatra::Base

  get '/some/endpoint' do
      response =
        {
            enabled: false
        }
  end

end

在我的 Cucumber 环境文件中

Thread.new do
  MockService1.run! host: 'localhost', port: '9000'
 end

Thread.new do
  MockService2.run! host: 'localhost', port: '8082'
 end

【问题讨论】:

    标签: ruby sinatra cucumber


    【解决方案1】:

    我能够使用 childprocess gem 在一个新的子进程下启动一个新的 sinatra 服务器。

    mock_service = ChildProcess.build('ruby', File.join(File.dirname(__FILE__), 'mock_service.rb'))
    mock_service.start
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      相关资源
      最近更新 更多