Jest сравнить объект с произвольным значением свойства - PullRequest
0 голосов
/ 23 февраля 2019

Я тестирую остальные API с помощью Jest.Я знаю, что мы используем toEqual, чтобы проверить, являются ли два объекта равными или нет, путем рекурсивного сравнения всех свойств.

Для примитивных значений toEqual использует Object.is для сравнения.

Проблема

Проблема, с которой я столкнулся при тестировании конечной точки /register.После успешной регистрации пользователя конечная точка возвращает данные пользователя.Детали использования содержат такую ​​информацию, как телефон, имя, адрес электронной почты и, что более важно, в этом случае user_id .

Теперь то, что я пытаюсь сделать, выглядит следующим образом:

const data = {
  sponsor_id: 'ROOT_SPONSOR_ID',
  phone: '9999999999',
  name: 'Joe',
  password: 'shhhhh'
};

// Some API call goes here which returns `body`

expect(body).toEqual({
  user_id, // <-- How to test value of this?
  sponsor_id: data.sponsor_id,
  phone: data.phone,
  name: data.name
});

Я не знаю заранее, каково будет возвращаемое значение поля user_id.Все, что я знаю, это был бы номер.Теперь это может быть любое числовое значение, так как в этом случае проверить свойство объекта с любым значением или любым числовым значением?

Одна вещь, которую я также хотел проверить, отправляю ли я какие-либо дополнительные данные(свойства), чем я ожидаю. Что, кстати, с помощью toEqual уже позаботилось.

Если мой подход к тому, как я тестирую это неверно, то, пожалуйста, предоставьте мнес лучшим с некоторыми объяснениями.

1 Ответ

0 голосов
/ 24 февраля 2019

Используйте expect.any(Number), чтобы убедиться, что user_id является Number:

test('matches', () => {

  const data = {
    sponsor_id: 'ROOT_SPONSOR_ID',
    phone: '9999999999',
    name: 'Joe',
    password: 'shhhhh'
  };

  const user_id = Math.floor(Math.random() * 1000);
  const body = Object.assign(data, { user_id });

  expect(body).toEqual({
    user_id: expect.any(Number),  // user_id must be a Number
    sponsor_id: data.sponsor_id,
    phone: data.phone,
    name: data.name,
    password: data.password
  });  // SUCCESS

});

Обратите внимание, что если вам нужен еще более конкретный сопоставитель, вы можете создайте свой собственный , используя expect.extends.

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