Значение doReturn не используется - PullRequest
0 голосов
/ 10 января 2019

Я использую пружинный ботинок 2. Я ищу, чтобы проверить частный метод на фасаде

@RunWith(SpringRunner.class)
@SpringBootTest
public class SamplingsFacadeTest {

    @Autowired
    private SamplingsFacade facade;

    @MockBean
    private SamplingsService samplingsService;

    @Test
    public void exampleTest() throws Exception {

        List<Samplings> samplings = new ArrayList<>();
        Samplling sampling = new Samplings();
        ..
        samplings.add(sampling);

        //fake call
        Mockito.doReturn(samplings).when(samplingsService.getSamplingContainingNonCompliantTest());

        //real call
        List<FactoryEmailNCDto> factoryEmails = Whitebox.invokeMethod(facade, "prepareDataNoncompliantSampling");

    }

public List<Samplings> getSamplingContainingNonCompliantTest() {

    return samplingsRepository.findSamplingContainingNonCompliantTest();
}

На Фасаде В

private List<FactoryEmailNCDto> prepareDataNoncompliantSampling() {

    List<FactoryEmailNCDto> factoryEmailNC = new ArrayList<>();

    List<Samplings> samplings = samplingsService.getSamplingContainingNonCompliantTest();

    for (Samplings sampling : samplings) {
        ...
    }

}

Почему при отладке выборки имеют значение null, а не значение, которое я создал

1 Ответ

0 голосов
/ 10 января 2019
Mockito.doReturn(samplings)
    .when(samplingsService.getSamplingContainingNonCompliantTest());

Одна потенциальная проблема заключается в том, что doReturn принимает форму doReturn(value).when(mock).method(), а не doReturn(value).when(mock.method()). Последний считается неполной заглушкой. Вместо этого это должно выглядеть так:

Mockito.doReturn(samplings)
    .when(samplingsService)
    .getSamplingContainingNonCompliantTest();

Обратите внимание, что могут быть другие проблемы с вашим тестом; код, который вы написали, ожидает, что samplingsService будет public и не-final, а ваш getSamplingContainingNonCompliantTest() также будет public, не-static и не-final, но код образец у вас не подтверждает это. Вы можете вызвать Mockito.validateMockitoUsage() в методе @After или использовать a @Rule, который обрабатывает аннотации и очистку Mockito для вас .

...