У меня есть класс и метод:
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 есть метод verification.




Вы не можете проверять частные методы с помощью mockito, поэтому вы можете сделать это с помощью PowerMock
Но я могу предложить вам протестировать возврат вашего общедоступного метода, поэтому вы также можете проверить свой поток, включая частные методы.
Я не вижу
ProductVerifyLink.verificationmetod в классеProductVerifyLinkс кодом, указанным в вопросе. Можете ли вы предоставить правильный исходный код?