У меня есть метод process
, который возвращает void, а также может выдать исключение.Я хочу проверить, как ведет себя другой метод run
при вызове process
и обрабатывает исключение в случае его возникновения.
Я пытался использовать doThrow()
, но он говорит: «Проверенное исключение недопустимо для этого»метод!».Затем я попытался использовать thenThrow()
, но ему нужна не пустая функция.
Код:
public void run() {
for (var billet : getBillets()) {
try {
process(billet);
billet.status = "processed";
} catch (Exception e) {
billet.status = "error";
}
billet.update();
}
}
public void process(Billet billet) throws Exception {
var data = parse(billet.data); // may throw an exception
var meta = data.get("meta"); // may throw an exception
// ... more parsing ...
new Product(meta).save();
new Item(meta).save();
// ... more operations ...
};
Тест:
var billet1 = new Billet();
var billet2 = new Billet();
doThrow(new Exception()).when(myInctance).process(billet2);
myInctance.run();
assertEquals("processed", billet1.status);
assertEquals("error", billet2.status);
// ... some checks ...
Я ожидаю тестбудет успешным.