给出示例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中进行异步测试?
答案 0 :(得分:1)
是。一种简单的方法是使用并行测试gem:
适用于CI服务器的类似宝石:
这些宝石都是关于跨CPU传播测试的。您的代码更适合的是并发测试。
如果您愿意使用Minitest(这很棒),那么它具有出色的并发性。 “Minitest使您能够表示您的部分或全部测试用例能够同时运行,并且正如源评论中所指出的那样,这只能意味着一件事:您统治并且您的测试非常棒。”
请参阅此博客详细解释: