[nodejs] TDD의 모의 객체 사용

TDD(Test-Driven Development)는 개발자가 코드를 작성하기 전에 테스트를 작성하는 소프트웨어 개발 방법론입니다. 이를 통해 안정성이 높은 소프트웨어를 만들 수 있습니다.

TDD에서 모의 객체(Mock Object)는 테스트 중에 필요한 외부 리소스나 의존성을 대체하는 역할을 합니다. Node.js에서는 Jest, Sinon과 같은 라이브러리를 사용하여 모의 객체를 만들 수 있습니다.

모의 객체 사용의 장점

모의 객체를 사용하면 외부 리소스에 의존하지 않고도 테스트를 수행할 수 있습니다. 이를 통해 테스트의 안정성을 높일 뿐만 아니라 테스트 속도도 빨라집니다.

Jest를 사용한 모의 객체 예제

아래는 Jest를 사용하여 모의 객체를 만들고 사용하는 간단한 예제입니다.

// math.js
class Math {
  add(a, b) {
    return a + b;
  }
}

module.exports = Math;
// math.test.js
const Math = require('./math');

test('add', () => {
  const math = new Math();
  const mockAdd = jest.fn();
  math.add = mockAdd;

  math.add(1, 2);

  expect(mockAdd).toHaveBeenCalledTimes(1);
  expect(mockAdd).toHaveBeenCalledWith(1, 2);
});

위 예제에서 jest.fn()을 사용하여 mockAdd 함수를 만들고, 이를 통해 math.add 메서드의 동작을 테스트하는 것을 볼 수 있습니다.

결론

TDD에서 모의 객체는 외부 의존성을 테스트하는 데 유용한 도구입니다. 모의 객체를 활용하여 테스트 코드를 더 견고하고 신뢰할 수 있도록 만들 수 있습니다.

참고 문헌: