2015-02-10 163 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使您能夠表示部分或全部測試用例可以同時運行,正如源註釋中指出的那樣,這隻能意味着一件事情:您的規則和測試非常棒。」

看到這個博客,解釋得很詳細: