2015-02-10 119 views
0

给出的示例屈应用在RSpec的同时运行两个测试/机架::测试/屈

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

给定的应用程序不作一大堆的意义,因为实例变量不跨请求保留。但不管如何,你的问题的答案是“使用线程”。 – 2015-02-10 20:56:38

回答

1

是的。一个简单的方法是使用并行测试宝石:

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

这些宝石都是一块在各个CPU之间传播测试。你的代码更适合的是并发测试。

如果你愿意使用Minitest(这很棒),那么就会有非常好的并发性。 “Minitest使您能够表示部分或全部测试用例可以同时运行,正如源注释中指出的那样,这只能意味着一件事情:您的规则和测试非常棒。”

看到这个博客,解释得很详细: