麻烦在Cucumber envy .rb中启动多个Sinatra实例



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

下面是我在启动测试

时得到的输出片段
== 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 app 1

class MockService1 < Sinatra::Base
  get '/some/endpoint' do
      response =
        {
            enabled: false
        }
  end
end

Sinatra app 2

class MockService2 < Sinatra::Base
  get '/some/endpoint' do
      response =
        {
            enabled: false
        }
  end
end

在我的Cucumber env文件中

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

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

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

最新更新