Как стать автором
Обновить

Комментарии 4

Пример с моком нулла конечно прикольный, но что-то не сходится, у меня полно тестов, где метод замокан, согласно сценарю теста он НЕ вызывается, а в конце делается проверка:

verify(замоканныйОбъект, times(0)).замоканныйМетод();

и все работает как ожидается, с ошибкой как у вас не падает.

В примере падение происходит в строке Mockito.when(null).thenReturn("qwerty"); - в момент настройки (когда история вызовов пустая), а не в момент использования.

Возможно, так проще

    @Test
    public void testFailed() {
        Object mockObject = Mockito.mock(Object.class);
        //mockObject.toString(); // если раскомментить, ошибки не будет
        Mockito.when(null) // тут падение
                .thenReturn("qwerty");
        Assertions.assertEquals("qwerty", mockObject.toString());
    }

А, все, дошло о чем речь, спасибо!

Mockito явно не сможет определить метод, который мы хотим переопределить. Вместо этого, он собирает историю вызова методов у mock-объектов и берет последний.

Семён Семёныч! Несколько раз сталкивался со странным поведением моков, которое не мог побороть и приходилось тестировать обходным манёвром. О оно вон оно что! Скорее всего дело было в этом. Блин, чёртовы маги, наколдовали колдунства! :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории