Spring MVC テスト フレームワークの standaloneSetup モードを使用して非同期メソッド呼び出しをテストすると、一貫性のない結果が得られます。次のテストは、私の IDE では合格できますが、ANT を使用して実行すると失敗しますが、ANT を使用して実行すると合格するか、IDE で失敗することがあります。2 番目の呼び出しの内容は、空の文字列を返すか、期待される応答を返します。
最初の呼び出しに .andDo(print) を追加するか、2 つの mockMvc.perform 呼び出しの間にたとえば 500 ミリ秒の Sleep を追加すると、テストに合格します。
他の誰かがこれに遭遇しましたか?
コントローラールート
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public final Callable<ResponseEntity<List<Integer>>> getEntries(
@RequestParam(value = "limit", defaultValue = "100") final int limit) {
return new Callable<ResponseEntity<List<Integer>>>() {
@Override
public ResponseEntitcany<List<Integer>> call() {
return new ResponseEntity<List<Integer>>(service.findTopEntries(limit), HttpStatus.OK);
}
};
}
テスト
this.mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
@Test
public void testJSONResponse() throws Exception {
MvcResult mvcResult = this.mockMvc.perform(get(this.basePath)
.accept(MediaType.APPLICATION_JSON))
.andReturn();
this.mockMvc.perform(asyncDispatch(mvcResult))
.andExpect(status().isOk())
.andExpect(content().string("[]"));
}