0

シナトラアプリの例を考えると

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 が呼び出されるのを待って、最初のテスト ( ) がハングします。

テスト #2 を開始する前に、テスト #1 の結果が完了するのを待たないように RSpec に指示することは可能ですか? 別名、RSpec で非同期テストは可能ですか?

4

1 に答える 1

1

はい。簡単な方法は、並列テストの gem を使用することです。

CI サーバーに適した同様の gem:

これらの gem はすべて、テストを複数の CPU に分散することを目的としています。コードがさらに適しているのは、並行テストです。

Minitest (これは素晴らしい) を使用することに寛容である場合は、優れた同時実行性があります。「Minitest は、テスト ケースの一部またはすべてを同時に実行できることを示す機能を提供します。ソース コメントで指摘されているように、それが意味することは 1 つだけです。それは、あなたが支配し、あなたのテストが素晴らしいということです。」

詳細を説明しているこのブログを参照してください。

于 2015-02-10T23:10:08.873 に答える