我正在编写依赖于两种不同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
答案 0 :(得分:0)
我能够使用childprocess gem在新的子进程下启动一个新的sinatra服务器。
mock_service = ChildProcess.build('ruby', File.join(File.dirname(__FILE__), 'mock_service.rb'))
mock_service.start