Мокито. Счетчик вызовов метода в создаваемом внутреннем объекте

У меня есть класс и метод:

class Verificator {

   private Dao dao;
   private VerifyConsts verifyConsts;

   @Autowired
   public Verificator(Dao dao, VerifyConstants verifyConsts) {
        this.dao = dao;
        this.verifyConsts = verifyConsts;
   }

   public List<Pair<Products, Problem>> verify(final List<Product> links) {
     //do smth
     return new ProductVerifyLink().verifyLinks(links, verifyConstants.getForisInstanceZoneId(), dao.getDate());
   }

}

У меня еще один класс:

public class ProductVerifyLink {

    public List<Pair<Products, Problem>> verifyLinks(List<Product> links,
            final ZoneId zone,
            final Timestamp date
    ) throws Exception {
        //do smth
        List<Pair<Product, Problem>> res = verification(ImmutableList.of(links), zone);
        return res.isEmpty() ? null : res;
    }

    private List<Pair<Product, Problem>> verification(List<Product> links, ZoneId zone) {
      //do smth
    }
    //other methods
}

Я создал тест:

    @Test
    public void calcTest() throws Exception {   
        final DAO dao = mock(DAO.class);
        final VerifyConstants verifyConsts = mock(VerifyConstants.class);
        final Verificator verifyLinks = Mockito.spy(new Verificator(dao, verifyConsts));

        final List<Product> links = ImmutableList.of(
                createUmrsLink(true, 2042229422, dateTime));
        final List<Long> linkIds = links.stream().map(Product::getProductId).collect(Collectors.toList());

        final List<Pair<ProductUmrs, VerifyProblem>> pairs = verifyLinks.verify(links);
    }

Я хочу проверить этот метод ProductVerifyLink.verification, вызванный один раз, и с необходимыми мне аргументами. Как можно использовать Mockito и сделать это из JUnit?

Вся проблема в том, что объект этого класса (ProductVerifyLink) создается внутри, а снаружи я не могу на него повлиять.

Я не вижу ProductVerifyLink.verificationmetod в классе ProductVerifyLink с кодом, указанным в вопросе. Можете ли вы предоставить правильный исходный код?

Emre Savcı 19.08.2018 17:03

Я обновил свой вопрос. В классе ProductVerifyLink есть метод verification.

All_Safe 19.08.2018 17:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
27
1

Ответы 1

Вы не можете проверять частные методы с помощью mockito, поэтому вы можете сделать это с помощью PowerMock

Но я могу предложить вам протестировать возврат вашего общедоступного метода, поэтому вы также можете проверить свой поток, включая частные методы.

Другие вопросы по теме