Частичная насмешка в мокито - принудительный метод в исключение и продолжение - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть метод с некоторой логикой и блоком исключений, и я хотел бы проверить содержимое в блоке исключений.

Метод:

Class Validator() {

    protected Validator(blah,blah) {

    }

    protected boolean doStuff(String a, String b) {

        try {
          isValidInput(a){
        } catch (Exception e) {
            b = "unknown error"
        }
    }

контрольный пример:

@Test
public void testException() {

Validator testValidator = new testValidator(blah, blah);

        Validator spy = spy(testValidator);
        String var2 = "unknown error"
        doReturn(new Exception()).when(spy.doStuff(var1, var2));

        assertEquals("unknown error", var2);
}

Как заставить реальный метод перейти в блок исключения и продолжить заглушку?

1 Ответ

2 голосов
/ 11 ноября 2011

Во-первых, забудьте об использовании spy - если isValidInput может вызвать исключение, то заставит его выдать исключение .

Если в isValidInput() используется соавтор, который может бросить Exception, то смоделируйте , что , используя Mockito. Если это просто ваш код, то вы должны иметь возможность установить a так, чтобы он генерировал исключение.

Вам все еще нужно написать полный набор тестов для isValidInput() - исследуйте, используя опцию expected в аннотации @Test (я предполагаю, что вы используете JUnit здесь), чтобы указать, что генерирование исключения является ожидаемым результатом. теста. Но, пожалуйста, не бросайте Exception - используя значимый его подкласс: -)

И, как прокомментировал @Dave Newton, тестирование var2 никогда не будет работать за пределами doStuff.

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