Выбросить исключение вместо возврата значения по умолчанию

Я новичок в Mockito и хочу использовать его в модульных тестах.

То, что мне не нравится, - это mocks, созданные с помощью Mockito.mock(Class<T>) возвращают значения по умолчанию (например, null) для методов, которые явно не определены. Вместо этого я хочу, чтобы они генерировали исключение в этом случае, поэтому я знаю, что мне нужно добавить это определение.

Я попробовал следующее:

SomeType m = mock( SomeType.class, new ThrowsException( new SomeRuntimeException( ... ) ) );
when( m.a() ).thenReturn( ... );

m.a();  // ok
m.b();  // throws exception

Но это не работает, потому что исключение вызывается уже во время вызова when().

Есть ли другой способ достичь этого?

Ответы

Ответ 1

Заменить

when( m.a() ).thenReturn( ... );

с

doReturn( ... ).when(m).a();