Не удается прочитать свойство 'id' из неопределенного - REACT JS

Вы можете создать ответ в 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]);

0
задан Jitendra Banshpal 15 January 2019 в 15:23
поделиться

1 ответ

Причина в том, что match является пустым {}, когда вы присвоили обновленное значение baseProps внутри вашего блока it.

baseProps = {...baseProps, match: {} };

Это означает, что он не содержит объект params, когда вы к нему обращались:

let URLParams = this.props.match.params;

И именно поэтому он выдает эту ошибку когда вы пытались получить доступ к id, поскольку URLParams - это undefined.


Есть два способа решить эту проблему.

Решение # 1

В своем тесте вместо присвоения пустого объекта match вы можете присвоить ему значение пустого params.

baseProps = {...baseProps, match: { params: {} } };

Решение № 2

Или вы можете назначить запасное значение URLParams, когда вы получаете значение из реквизита, который в этом случае будет пустым объектом.

[1 124] let URLParams = this.props.match.params || {}; [1 124]
0
ответ дан Ana Liza Pandac 15 January 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: