Создать @MockBean с квалификатором, аннотируя класс? - PullRequest
0 голосов
/ 06 февраля 2019

В моем тесте Spring Boot я использую 2 фиктивных бина с разными квалификаторами:

@RunWith(SpringRunner.class)
@SpringBootTest
class HohoTest {
    @MockBean @Qualifier("haha") IHaha ahaha;
    @MockBean @Qualifier("hoho") IHaha ohoho;
}

Поскольку я не использую эти бины явно, я бы предпочел убрать их из тела класса, так каканнотация @MockBean теперь повторяется:

@RunWith(SpringRunner.class)
@SpringBootTest
@MockBean(IHaha.class)
@MockBean(IHaha.class)
class HohoTest {}

Однако мне нужно передать и классификатор, поскольку они имеют одинаковый тип.Есть идеи, как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Если можно полностью удалить определение макета из тестового класса, вы также можете создать макеты в отдельном @Configuration классе:

@Configuration
public class MockConfiguration
{
    @Bean @Qualifier("haha")
    public IHaha ahaha() {
        return Mockito.mock(IHaha.class);
    }
    @Bean @Qualifier("hoho")
    public IHaha ohoho() {
        return Mockito.mock(IHaha.class);
    }
}
0 голосов
/ 07 февраля 2019

При объявлении @MockBean на уровне класса в настоящее время нет поддержки для предоставления квалификатора .

Если вы хотите получить такую ​​поддержку, я предлагаю вам запросите его в трекере проблем Spring Boot .

В противном случае вам нужно будет продолжать объявлять @MockBean в полях рядом с @Qualifier.

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