Обновление вопроса: как макетировать MapTo Json класс - PullRequest
0 голосов
/ 19 февраля 2020

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

Вот мой класс:

@Component
public class Utils {

    @Autowired
    private ObjectMapper mapper = new ObjectMapper();

    @Autowired
    private LoggingService loggingService;

    public <E> String mapToJsonString(E object) {
        try {
            if (object == null) {
                throw new IOException(ErrorMessage.ERROR_PROCESSING_JSON_NULL);
            }else {
                return mapper.enable(SerializationFeature.INDENT_OUTPUT).writeValueAsString(object); //NullPointer Here
            }

        } catch (IOException e) {
            loggingService.logError(this.getClass().getName(), "1", ErrorMessage.ERROR_MAPPING_TO_JSONSTRING, e);
            return "";
        }
    }
}

, а вот мой модульный тест

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = ATMMonitoringApplication.class, initializers = ConfigFileApplicationContextInitializer.class)
public class ObjectToJsonStringTest {

    @SpyBean
    private ATM atm;

    @Autowired
    private Utils utils;

    @MockBean
    private ObjectMapper mapper;

    @MockBean
    private LoggingService loggingService;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        myModelClass = new MyModelclass();
            myModelClass.setStatus("U");
            myModelClass.setTermCode("001");
            myModelClass.setLocation("BGC");
    }

    @Test
    public void testObjectToJson() throws JsonProcessingException {
        String output = utils.mapToJsonStringmyModelClass 
        assertNotNull(output);
    }

    @Test
    public void testObjectToJsonNull() throws JsonProcessingException {
        String output = utils.mapToJsonString(null);
        assertNull(output);
    }

    @Test
    public void testJsonParsingException() {
        myModelClass = new MyModelclass();
            myModelClass = null;
        String output = utils.mapToJsonString(myModelClass); 
        Mockito.when(loggingService.logError(this.getClass().getName(), "1", ErrorMessage.ERROR_MAPPING_TO_JSONSTRING, new Exception()))
        .thenReturn("");
        assertThat(output).isEmpty();
    }

}

Трассировка стека говорит, что у меня нулевой указатель на эту строку кода:

return mapper.enable(SerializationFeature.INDENT_OUTPUT).writeValueAsString(object);

Пожалуйста, помогите мне в этом. Спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Решил это. Я просто изменяю это

@Mock
private ObjectMapper mapper;

из @MockBean, и оно охватывает весь класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...