Прямой доступ к тесту на равенство Jest - PullRequest
1 голос
/ 30 апреля 2020

Используя Jest, вы можете легко провести глубокое сравнение двух объектов:

expect(requestBody).toEqual(expectedRequest);

Есть ли способ использовать тот же самый тест на равенство программно, не вызывая утверждение? Что-то вроде

const matches = isEqual(requestBody, expectedRequest);

Это было бы очень полезно для написания предикатов в модульных тестах. Например, чтобы Angulars HttpTestingController следила за конкретным c телом запроса, было бы неплохо просто написать

  httpController.expectOne(request => isEqual(request.body, expectedRequest));

1 Ответ

1 голос
/ 30 апреля 2020

Функции Jest Matcher не выставляются. В случае необходимости глубокой проверки на равенство, Lodash / Underscore isEqual может использоваться непосредственно , который используется Jest .

Возможно отловить ошибку утверждения:

isEqual = (a, b) => {
  try {
    expect(a).toEqual(b);
    return true;
  } catch (err) {
    if (e.matcherResult)
      return false;

    throw err;
  }
};

Jest может быть интегрирован с HttpTestingController путем определения пользовательского сопоставителя , который имеет доступ к equals.

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