У меня есть класс со следующим методом, для которого я хочу написать модульный тест:
public class Service {
..
..
Test getTestObj(@NotNull Product product) {
String prodJSON;
try {
prodJSON = Test.mapper.writeValueAsString(product); // The class Test is defined as below and has the ObjectMapper property
logger.info("product json", productJSON);
} catch (JsonProcessingException e) {
logger.error("...", e);
..
throw new InternalServerErrorException("An error occured");
}
...
...
}
..
..
}
Test.java
public class Test {
public static final ObjectMapper mapper = new ObjectMapper();
..
..
}
Допустим, у меня есть класс Test (ServiceTest.java) для Service.java, где я хочунаписать модульный тест для метода Test getTestObj(@NotNull Product product) {
В этом модульном тесте я в основном хочу охватить сценарий, в котором выбрасывается исключение JsonProcessingException.Итак, я хочу иметь возможность протестировать код:
} catch (JsonProcessingException e) {
logger.error("...", e);
throw new InternalServerErrorException("An error occured");
}
Допустим, я начинаю с моего ServiceTest.java
@Test
public void getTestObjTest() {
Product prod = new Productt();
service.getTestObj(prod);
}
Вышеупомянутый тест просто охватит счастливый путь, где JsonProcessingExceptionне брошен.Как я могу изменить свой тест, чтобы исключение JsonProcessingException вызывалось при вызове getTestObj?
Обратите внимание, что я не могу изменить классы Test.java и Service.java.Я могу изменить только мой тест
В моем тесте я вызываю метод как: service.getTestObj (prod);
Так что я должен передать действительный объект Product.И это никогда не вызовет JSONProcessingException.Есть ли способ манипулировать или сбрасывать значение prod (которое передается методу writeValueAsString) с помощью чего-то вроде new Object ()?