study/JavaScript & TypeScript

Jest의 Matcher 함수: objectContaining과 arrayContaining

836586697769 2024. 7. 6. 18:13

expect.objectContaining()

주어진 객체가 지정된 속성을 포함하고 있는지를 확인하는 Matcher

expect(receivedObject).toEqual(
  expect.objectContaining({
    id: expect.any(Number),
    name: 'John',
  })
);

→ receivedObject는 id 속성(any Number)과 name 속성(’John’)을 포함하고 있어야 함

test('객체의 부분 일치', () => {
    const obj = { name: 'Alice', age: 25, city: 'Wonderland' };
    expect(obj).toEqual(expect.objectContaining({ name: 'Alice', age: 25 }));
});

→ 성공

 

expect.arrayContaining()

주어진 배열이 특정 요소들을 포함하고 있는지를 확인하는 Matcher

expect(receivedArray).toEqual(
  expect.arrayContaining([
    expect.objectContaining({
      id: expect.any(Number),
      name: 'John',
    }),
    expect.objectContaining({
      id: expect.any(Number),
      name: 'Jane',
    }),
  ])
);

→ receivedArray는 두 개의 객체를 포함하고 있어야 하며, 각각의 객체는 id 속성이 어떤 숫자든지 가능하고, name 속성은 각각 ‘John’과 ‘Jane’이어야 함

test('배열의 부분 일치', () => {
    const arr = [{ name: 'Alice' }, { name: 'Bob' }, { name: 'Carol' }];
    expect(arr).toEqual(expect.arrayContaining([{ name: 'Alice' }, { name: 'Carol' }]));
});

→ 성공