Как я могу издеваться над этой функцией в тесте на шутливую реакцию? - PullRequest
0 голосов
/ 25 января 2019

В моем jest snapshottest у меня есть:

it('should render Alerts', () => {
const component = withTheme(
<AlertsContainer alerts={alertsMock} getApplicants={applicantsMock} />
);
const wrapper = shallow(component).dive();
expect(wrapper).toMatchSnapshot();
});

const applicantsMock = [
{
   firstName: 'John',
   lastName: 'Sharma',
   idScheme: 'CustomerInternalId',
   isPrimaryApplicant: true,
   applicantSerialNumber: 1,
   id: '000000797',
}]

const alertsMock = [
{
   taskType: 'Pending',
   taskName: 'Task1',
   subject: 'Review',
   submissionId: 'SUB200620150000875',
   createdBy: 'testuser',
   createdDateTime: '2018-06-14T00:00:00.000Z',
   assignedDateTime: '2018-06-15T00:00:00.000Z',
   dueDateTime: '2018-06-21T00:00:00.000Z',
   applicants: ['16671520038', '16671520039'],
   id: '05025fea-ec37-4767-a868-a646597365d0',
}];

В реальном компоненте AlertsContainer у меня есть функция:

getApplicantByid = id => _.find(this.props.getApplicants, { id });

Когда я запускаю тест, я получаю:

TypeError: Cannot read property 'isPrimaryApplicant' of undefined

      121 |         name: a.applicants
      122 |           .map(id => this.getApplicantByid(id))
    > 123 |           .find(applicant => applicant.isPrimaryApplicant).lastName,
          |                                     ^
      124 |       }));
      125 |   };
      126 |

Как я могу издеваться над этим вызовом this.getApplicantByid (id)?

1 Ответ

0 голосов
/ 25 января 2019

Насколько я знаю, вы не можете высмеивать методы экземпляра компонента.Однако вы могли бы шпионить за поиском lodash перед тестомправильно, как это

it('it retrieves the applicant', () => {
  const component = withTheme(
    <AlertsContainer alerts={alertsMock} getApplicants={applicantsMock} />
  );
  const wrapper = shallow(component).dive();

  expect(mock).toHaveBeenCalledWith(applicantsMock[0].id)
})

Надеюсь, это помогло!

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