Jest에서 와일드카드 오브젝트 키 매칭하기
문제 상황과 해결 방법 소개
StackOverflow에서 사용자들은 자주 테스트 라이브러리 Jest에서 와일드카드 오브젝트 키를 어떻게 매칭할 수 있는지에 대한 질문을 합니다. 와일드카드는 여러 경우에 대응할 수 있는 특수한 문자나 문자열을 의미합니다. 오브젝트 키를 테스트할 때 정확한 키 이름을 모를 수 있으므로, 이 기능은 매우 유용합니다.
expect.objectContaining
메서드 사용하기
Jest에서는 expect.objectContaining
이라는 메서드를 사용하여 와일드카드 오브젝트 키를 테스트할 수 있습니다. 이 메서드는 오브젝트가 특정 키와 값을 포함하는지 확인하는 데 사용됩니다. 하지만 이것만으로는 와일드카드를 완벽하게 지원하지 않습니다.
1
2
3
test('using expect.objectContaining', () => {
expect({a: 1, b: 2}).toEqual(expect.objectContaining({a: 1}));
});
커스텀 매처 사용하기
커스텀 매처를 사용하여 와일드카드 오브젝트 키를 더 유연하게 매칭할 수 있습니다. 커스텀 매처는 사용자가 직접 정의한 조건에 따라 테스트를 수행하는 함수입니다.
1
2
3
4
5
6
7
8
9
expect.extend({
toMatchWildcardObject(received, argument) {
// 와일드카드 로직 구현
},
});
test('using custom matcher', () => {
expect({ 'key-*': 'value' }).toMatchWildcardObject({ 'key-*': 'value' });
});
장단점 비교
expect.objectContaining
메서드
- 장점: Jest 내장 메서드이므로 별도의 설정이 필요 없습니다.
- 단점: 와일드카드에 완전히 대응할 수 없습니다.
커스텀 매처
- 장점: 유연하게 와일드카드 오브젝트 키를 테스트할 수 있습니다.
- 단점: 로직을 직접 구현해야 하므로 코드가 복잡해질 수 있습니다.
결론
Jest에서 와일드카드 오브젝트 키를 테스트하려면 expect.objectContaining
메서드나 커스텀 매처를 사용할 수 있습니다. expect.objectContaining
은 간단한 경우에 적합하고, 커스텀 매처는 복잡한 경우나 완전한 와일드카드 지원이 필요할 때 사용하는 것이 좋습니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.