Я пытаюсь создать тест контроллера с @WebMvcTest, и, как я понимаю, когда я помещаю аннотацию @WebMvcTest(ClientController.класс) тестового класса, он не должен создавать много bean-компонентов, а только те, которые требуются этому контроллеру.
Я издеваюсь над bean-компонентом, который требуется этому контроллеру с @MockBean, но почему-то он терпит неудачу, за исключением того, что есть «Нет квалификационного компонента» другой службы, которая не требуется этим контроллером, а другим.
Итак, этот тест не работает:
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = ClientController.class)
public class ClientControllerTest {
@MockBean
ClientService clientService;
@Test
public void getClient() {
assertEquals(1,1);
}
}
Я создал пустой проект Spring Boot той же версии (2.0.1) и попытался создать там тест. Это сработало отлично.
Итак, моя проблема может быть из-за зависимостей, которых много в моем проекте, но, может быть, есть какая-то общепринятая практика, где искать в этой ситуации? Что может испортить логику @WebMvcTest?




Я нашел обходной путь. Не использовать @WebMvcTest и @MockBean, а создавать все вручную:
//@WebMvcTest(ClientController.class)
@RunWith(SpringRunner.class)
public class ClientControllerTest {
private MockMvc mockMvc;
@Mock
ClientService clientService;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(
new ClientController(clientService)
).build();
}
работает с Spring 1.4.X и с Spring Boot 2.X (были разные исключения там и там), но все еще не объясняет, почему @WebMvcTest не работает
я столкнулся с той же проблемой в данный момент .... спасибо за обходной путь