[javascript] Mocha에서 테스트용 가짜(fake) 서버를 구축하는 방법은?

Mocha는 테스트 프레임워크입니다. 테스트하기 위해 가끔은 외부 서버와의 통신을 시뮬레이트해야 할 때가 있습니다. 이때 Mocha에서는 가짜(fake) 서버를 구축하여 테스트를 수행할 수 있습니다. 이 가이드에서는 가짜 서버를 구축하는 방법을 알아보겠습니다.

  1. Nock 패키지 설치 Nock은 Node.js에서 가짜 서버를 구축하기 위한 패키지입니다. 테스트 환경에서 외부 요청을 가로채서 응답을 제어할 수 있습니다. 다음 명령을 사용하여 Nock을 설치합니다:
npm install nock --save-dev
  1. 가짜 서버 설정 Mocha 테스트 파일의 상단에 다음 코드를 추가하여 Nock을 초기화합니다:
const nock = require('nock');

before(function () {
  // 가짜 서버를 생성하고 요청-응답을 정의합니다.
  nock('http://example.com')
    .get('/api/data')
    .reply(200, { result: 'fake data' });
});

after(function () {
  // 테스트 이후에 Nock을 정리합니다.
  nock.restore();
});

위 코드는 http://example.com/api/data에 대한 GET 요청을 정의하고, 응답으로 { result: 'fake data' }를 반환하도록 설정합니다.

  1. 테스트 작성 가짜 서버가 설정되었으니 이를 활용하여 테스트를 작성할 수 있습니다. 예를 들어, http://example.com/api/data에서 데이터를 가져오는 모듈을 테스트한다고 가정해봅시다.
const fetchData = require('../fetchData');

describe('fetchData 모듈', function () {
  it('데이터를 성공적으로 가져와야 함', function () {
    return fetchData()
      .then(function (data) {
        // 반환된 데이터를 확인합니다.
        assert.deepEqual(data, { result: 'fake data' });
      });
  });
});

위 테스트는 fetchData 함수에서 반환된 데이터가 { result: 'fake data' }와 동일한지 확인합니다. 이때 실제 외부 서버와 통신하지 않고, 가짜 서버를 통해 응답을 받기 때문에 테스트의 안정성과 속도가 향상됩니다.

여기까지 Mocha에서 테스트용 가짜 서버를 구축하는 방법에 대해 알아보았습니다. 가짜 서버를 사용하여 외부 의존성이 있는 테스트를 작성하면 테스트의 신뢰성과 효율성을 높일 수 있습니다. 더 자세한 정보는 Nock 공식 문서를 참조하시기 바랍니다.