Жасмин ожидает toEqual, но игнорирует дополнительные свойства фактического объекта, чтобы предотвратить «Ожидается ... не иметь свойств ...» - PullRequest
1 голос
/ 30 октября 2019

Иногда мне нужно утверждать только конкретные свойства фактического объекта, а другие свойства меня не волнуют.

Например:

const actual = [
  { a: 1, additionalProp: 'not interestig' },
  { a: 2, additionalProp: 'not interestig' }
];

expect(actual).toEqual([
  { a: 1 },
  { a: 2 }
])

В настоящее время это не удается с помощью:

Ожидается, что $ [0] не будет иметь свойств
AdditionalProp: 'random value'

Как мне написать ожидание?

В настоящее время я делаю что-то вроде этого:

expect(actual.map(i => ({a: 1}))).toEqual([
  { a: 1 },
  { a: 2 }
])

но мне это не очень нравится, и оно не работает для более сложных объектов

1 Ответ

1 голос
/ 30 октября 2019

Вы могли бы явно обратиться к конкретным объектам и их соответствующим атрибутам?

expect(actual.length).toBe(2);
expect(actual[0]['a']).toBe(1);
expect(actual[1]['a']).toBe(2);

Другой подход использует jasmine.obectContaining. Это может быть более уместным, если ожидаемые объекты содержат несколько свойств.

const expected = [
    { a: 1 },
    { a: 2 }
];
expect(actual.length).toBe(expected.length);
for (let i = 0; i < expected.length; i++) {
    expect(actual[i]).toEqual(jasmine.objectContaining(expected[i]));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...