Вы можете создать ответ в Mockito. Предположим, у нас есть интерфейс с именем Application с методом myFunction.
public interface Application {
public String myFunction(String abc);
}
Вот тестовый метод с ответом Mockito:
public void testMyFunction() throws Exception {
Application mock = mock(Application.class);
when(mock.myFunction(anyString())).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
return (String) args[0];
}
});
assertEquals("someString",mock.myFunction("someString"));
assertEquals("anotherString",mock.myFunction("anotherString"));
}
Поскольку Mockito 1.9.5 и Java 8 есть еще более простой способ, используя лямбда-функции:
when(myMock.myFunction(anyString())).thenAnswer(i -> i.getArguments()[0]);
Причина в том, что match
является пустым {}
, когда вы присвоили обновленное значение baseProps
внутри вашего блока it
.
baseProps = {...baseProps, match: {} };
Это означает, что он не содержит объект params
, когда вы к нему обращались:
let URLParams = this.props.match.params;
И именно поэтому он выдает эту ошибку когда вы пытались получить доступ к
blockquote>id
, посколькуURLParams
- этоundefined
.
Есть два способа решить эту проблему.
Решение # 1
В своем тесте вместо присвоения пустого объекта
match
вы можете присвоить ему значение пустогоparams
.baseProps = {...baseProps, match: { params: {} } };
Решение № 2
Или вы можете назначить запасное значение
[1 124]URLParams
, когда вы получаете значение из реквизита, который в этом случае будет пустым объектом.let URLParams = this.props.match.params || {};
[1 124]