2017-03-06 11 views
1

私はJestテストを同時に実行したいのですが、1つのシナリオで問題が発生しています:リクエストごとに複数のテストを実行してJestで並行テストを実行するにはどうすればよいですか?

私はエンドポイントで結果をテストしています。したがって、私のbeforeAll関数では、リクエストを作成してレスポンスを格納し、次に複数のテストでレスポンスをテストします。これは同期的にうまく動作しますが、テストを並行させると、テストに変数を渡すことができなくなります。あるいは、テスト自体にリクエストを入れて、レスポンスについて多くのことを期待することができますが、何かが失敗した場合に何がうまくいかないかを細かく調べることはできません。

このシナリオの解決策はありますか?

これは動作します:

it.concurrent('data should have correct values', async() => { 
    const data = await getDataFromRequest(); 
    expect(data.value1).toBeTruthy(); 
    expect(data.value2).toBeTruthy(); 
} 

をしかし、私が欲しいのです:

let data; 
beforeAll(async() => { 
    data = await getDataFromRequest(); 
} 
it('value1 should be truthy',() => { 
    expect(data.value1).toBeTruthy(); 
} 
it('value2 should be truthy',() => { 
    expect(data.value2).toBeTruthy(); 
} 

また、これは動作します

let data; 
beforeAll(async() => { 
    data = await getDataFromRequest(); 
} 
it.concurrent('value1 should be truthy',() => { 
    expect(data.value1).toBeTruthy(); 
} 
it.concurrent('value2 should be truthy',() => { 
    expect(data.value2).toBeTruthy(); 
} 
+0

これを解消しましたか?私は最近、自分自身でこの問題に出会った。 – John

答えて

0

は、についての議論もあることを、指摘する価値思えますこれは害虫の問題で:https://github.com/facebook/jest/issues/4281

要点:そのようには機能せず、計画されていません。考えられる回避策:

const dataPromise = getSomeDataPromise(); 

test.concurrent('one', async() => { 
    const data = await dataPromise; 
}); 

test.concurrent('two', async() => { 
    const data = await dataPromise; 
});