私はTDDに足を踏み入れようとしています。Mockito を MockMvc および Junit と組み合わせて使用して、コントローラーの単体テスト ケースを作成しようとしています。
しかし、実行時エラーが発生したため、テストに失敗しました。最初は、javax.servlet.SessionCookieConfig
.
これは、API をダウンロードしjavax.servlet
てプロジェクトのビルド パスに構成することで解決しましたが、その後、
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()
perform()
MockMvc インスタンスで使用中。
互換性のないサーバー servlet-api と javax.servlet api が原因で発生していると思われるため、この種の依存関係をどうするか教えてもらえますか。
編集:私は単体テストに使用しているコードを投稿していますが、それは役に立たないと思いますが、念のために:
@RunWith(MockitoJUnitRunner.class)
public class MyControllerTest {
@InjectMocks
private MyController myController = new MyController();
@Mock
private MyService myService = new MyServiceImpl();
private MockMvc mockMvc;
@Before
public void setUp(){
this.mockMvc = MockMvcBuilders.standaloneSetup(myController).build();
}
@Test
public void testList() throws Exception{
A a = new A();
a = createMockClassA();
Mockito.when(myService.getServiceForA(Mockito.anyMapOf(String.class, String.class))).thenReturn(a);
MvcResult result = this.mockMvc.perform(get("/somePath/")).param("someExpectedParam","value").andReturn();
System.out.println(result.getResponse().getContentAsString());
}
private static A createMockClassA(){
A a = new A();
a.setId(i);
a.setTitle("mock-" + i);
return a;
}
}