@WebMvcTest по какой-то причине создает более одного контроллера - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь создать тест контроллера с @ WebMvcTest , и, как я понимаю, когда я помещаю @ WebMvcTest (ClientController.class) аннотацию тестового класса, он долженне создавать целые бины, а только те, которые требуются этому контроллеру.

Я издеваюсь над бином, который требуется этому контроллеру с @ 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 логика?

1 Ответ

0 голосов
/ 09 марта 2019

Я нашел обходной путь.Не использовать @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 не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...