[javascript] Chai를 이용한 테스트 이중화 방법은?

Chai는 JavaScript를 위한 강력한 어설션 라이브러리로, 테스트를 작성할 때 유용하게 사용됩니다. 이중화 테스트는 코드의 신뢰성을 높이기 위해 중복된 테스트를 작성하는 것을 의미합니다. 이를 통해 코드의 각 부분이 동일한 결과를 반환하는지 확인할 수 있습니다.

Chai에는 다양한 방법으로 테스트 이중화를 구현할 수 있습니다. 여기에는 두 가지 일반적인 방법이 있습니다.

1. 유사(Deep) 비교(assert.deepStrictEqual)

Chai의 assert.deepStrictEqual 메서드를 사용하여 객체나 배열과 같이 복잡한 데이터 구조를 비교할 수 있습니다. 이 메서드는 정확한 일치 여부를 확인하기 위해 객체의 모든 속성을 재귀적으로 탐색합니다.

예를 들어, 다음과 같은 객체를 이중화 테스트하려고 한다고 가정해봅시다:

const expected = { name: 'John', age: 30 };
const actual = { name: 'John', age: 30 };

assert.deepStrictEqual(actual, expected);

위의 코드에서 assert.deepStrictEqual 메서드를 사용하여 actualexpected 객체를 비교합니다. 두 객체가 동일한 속성을 가지고 있으므로 테스트는 통과할 것입니다.

2. Chai의 스파이(Spy)를 이용하여 호출 여부 검증하기

Chai의 스파이를 사용하면 특정 함수가 실제로 호출되었는지 확인할 수 있습니다. 이는 함수의 일부 또는 전체를 가로채고, 호출된 횟수 및 인수를 추적할 수 있도록 도와줍니다.

예를 들어, 다음과 같은 함수를 이중화 테스트하려고 한다고 가정해봅시다:

function add(a, b) {
  return a + b;
}

const spy = chai.spy(add);

spy(2, 3);

chai.expect(spy).to.have.been.called.with(2, 3);

위의 코드에서는 chai.spy 메서드를 사용하여 add 함수를 스파이 객체로 감싸고, spy 객체를 호출합니다. 마지막 줄에서는 chai.expect를 사용하여 spy 객체가 23 인수로 호출되었는지 확인합니다.

결론

Chai를 이용한 테스트 이중화는 코드의 신뢰성을 높이는 데 도움이 됩니다. 유사 비교와 스파이를 이용한 호출 여부 검증을 통해 코드의 일관성을 보장할 수 있습니다. 이러한 방법들을 적절히 활용하여 효과적인 테스트를 작성하세요.