Mockito - Установить значение по умолчанию для возвращаемой строки для всех проверенных методов. - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть класс, который имеет более 20 методов, которые возвращают строковые значения. Эти строки не имеют отношения к моему тесту, но довольно много времени занимает установка when->thenReturn для каждой функции, особенно потому, что есть несколько таких классов.

Есть ли способ сообщить mockito: пустая строка по умолчанию вместо null, или любое строковое значение, которое я буду sh в этом отношении?

1 Ответ

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

Я создал класс для выполнения этого в вашем проекте, когда это необходимо, просто инициируйте макет (обычно в функции @Before)

myClassMock = mock(MyClass::class.java, NonNullStringAnswer())

NonNullStringAnswer.kt

/** Used to return a non-null string for class mocks.
 *
 * When the method called in the Mock will return a String, it will return the name of the
 * method instead of null.
 *
 * For all other methods the default mocking value will be returned.
 * 
 * If you want to mock additional methods, it is recommended to use doReturn().when instead on
 * when().thenReturn
 *
 * Example of usage:
 *
 * myClassMock = mock(MyClass::class.java, NonNullStringAnswer())
 *
 **/
class NonNullStringAnswer : Answer<Any> {
    @Throws(Throwable::class)
    override fun answer(invocation: InvocationOnMock): Any {
        return if (invocation.method.returnType == String::class.java) {
            invocation.toString()
        } else {
            Mockito.RETURNS_DEFAULTS.answer(invocation)
        }
    }
}
...