2017-05-04 1 views
0

nodejs 테스트 입문.서버를 실행하지 않고 nodejs 서버 코드를 테스트하십시오.

나는 복잡한 서버 측 로직을 실행하는 nodejs 서버를 가지고 있으며, 그 코드에 대한 유닛 테스트 러너를 만드는 중이다. do do 아니요 서버를 실행하고 서버 측에서 테스트하려는 모든 모듈과 기능을 노출하지 않으므로 요청을 보내는 테스트를 실행하려고합니다. 그것은 통합 테스트와 같은 것입니다. AMD 모듈로 작성된 서버 측 파일을 가져 와서 단위 테스트에서 하나씩 함수를 호출하기 만하면됩니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변

1

현재 프로젝트에 유닛 테스트 및 어설 션 프레임 워크를 설치하는 것으로 시작하는 것이 좋습니다. 그런 다음 requirejs (r.js)을 추가 할 수도 있습니다.

우리는 현재 should을 어설 션 라이브러리로 사용하여 단위 테스트를 위해 mochajs을 사용하고 있습니다. 두 제품 모두 Node.js 테스트를위한 큰 지원 및 기능 지원을 제공합니다.

이렇게하면 로컬 node_modules에 3 개의 패키지가 추가되고 package.json의 devDependencies에 저장됩니다.

이 가서 설치 프로젝트에 단위 테스트 디렉토리가 새로운 테스트 파일을 작성, [your_module_name] _test.js : 테스트 파일에서

const should = require('should'), 
     foo = require('foo'); 

describe('foo',() => { 
    it('returns the letter a',() => { 
    foo().should.eql('a'); 
    }); 
}); 

당신이 테스트중인 모듈을 필요로 할 것이며, 평소처럼 단위 테스트를하십시오. 또한 전 세계적으로 mochajs를 설치 한 다음 단순히 해당 지역의 node_modules의 내부 빈을 사용하는 대신 모카 명령을 실행할 수 있습니다

./node_modules/requirejs/bin/r.js [your_test_dir]/[your_module_name]_test.js 

그런 다음 r.js을 통해 테스트를 실행할 수 있습니다.

행운을 빈다. 이것이 도움이되기를 바랍니다.

+0

자세한 답변을 보내 주셔서 감사합니다. 실제로 mochajs도 사용하고 있지만, 테스트 스크립트 나 노드 repl에 AMD 모듈이 필요한 문제가 있습니다. 'require ('path/to/amd/module')가 노드에서 작동합니까? – yelsayed

+0

현재 AMD 스타일 모듈을 사용하고 있지 않으므로 r.js를 통해 실행하는 것이 좋습니다. https://github.com/requirejs/r.js –

+0

이것은 내가 찾던 고맙습니다! 이 비트를 추가하기 위해 답을 편집하면 원래 질문의 일부이기 때문에 받아 들일 것입니다. :) – yelsayed

관련 문제