Я пытаюсь намочить ноги с помощью TDD. Я пытаюсь написать модульные тестовые примеры для контроллеров, используя Mockito в сочетании с MockMvc и Junit.
Но я получаю ошибку времени выполнения, тем самым проваливая тест. Сначала я столкнулся с проблемой инициализации экземпляра MockMvc в настройке из-за невозможности найти файл 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;
}
}