在RSpec / Rack :: Test / Sinatra中同时运行两个测试

时间:2015-02-10 20:54:30

标签: ruby rspec sinatra rack rack-test

给出示例sinatra app

post '/1' do
  sleep(1) until @2
  0
end

post '/2' do
  @2 = true
  0
end

和示例RSpec测试

describe 'test' do

  it 'does /1' do
    post '/1'
    expect(last_response.body) to eq?(0)
  end

  it 'does /2'
    post '/2'
    expect(last_response.body) to eq?(0)
  end

end

第一个测试(it does /1)将挂起,等待/ 2被调用。

是否有可能告诉RSpec在开始测试#2之前不等待测试#1的结果完成? A.K.A,是否可以在RSpec中进行异步测试?

1 个答案:

答案 0 :(得分:1)

是。一种简单的方法是使用并行测试gem:

适用于CI服务器的类似宝石:

这些宝石都是关于跨CPU传播测试的。您的代码更适合的是并发测试。

如果您愿意使用Minitest(这很棒),那么它具有出色的并发性。 “Minitest使您能够表示您的部分或全部测试用例能够同时运行,并且正如源评论中所指出的那样,这只能意味着一件事:您统治并且您的测试非常棒。”

请参阅此博客详细解释: