2017-10-03 7 views
0

나는이 튜토리얼을 약간 변경하려고 노력하고있다. https://semaphoreci.com/community/tutorials/getting-started-with-node-js-and-mocha모카의 프레임 워크로 NodeJS 웹 서버를 시작하고 중지 할 수 있습니까?

npm test 명령이 실행될 때 Mocha 프레임 워크가 시작될 때 자동으로 웹 서버를 시작하고 싶습니다. 수동으로 웹 서버를 시작하고, Mocha 테스트를 실행 한 다음 웹 서버를 중지하고 싶지 않습니다. 내가 튜토리얼에 따라 시험 명령을 사용하면

, 자동으로 웹 서버를 시작하지 않습니다

"scripts": { 
    "test": "./node_modules/.bin/mocha --reporter spec" 
    } 

이 명령은 나에게 첫 번째 단계에서 stucked 것, 테스트가 실행되지 않습니다. testinit.js :

if (process.platform == "linux"){ 
    script = "testInitializer.sh" 
} else { //(process.platform == "win32") 
    script = "testInitializer.bat" 
} 

"scripts": { 
    "test": "node ./test/testinit.js" 
    } 

예 (OS 특정 스크립트를 생성 등)

"scripts": { 
    "test": "node app/server && ./node_modules/.bin/mocha --reporter spec && ... && TERMINATE_SERVER && ..." 
    } 

은 내가 JS 파일을 실행하려고했지만,이 경우 다른 문제가 나타납니다

그 후 스크립트에서 동기식으로 일부 셸 특정 명령을 사용해야합니다.

const execSync = require('child_process').execSync; 
execSync("..."); // start 
// run the tests 
execSync("..."); // stop 

... 너무 복잡해 보입니다.

이 문제에 대해 여러 OS 의존형 솔루션을 만들고 싶지 않은 경우 어떻게해야합니까? 프레임 워크가 필요할 때만 웹 서버를 시작하고 중지 할 수 있습니까?

도움 주셔서 감사합니다.

답변

0

supertest 모듈을 사용하여이 작업을 수행 할 수 있다고 생각합니다. 파일 server.js 또는 익스프레스 앱 app.js을 작성하는 파일이있는 경우 해당 파일을 요구하고 서버에 HTTP 요청을 작성하기 위해 리턴 된 오브젝트를 supertest로 전달하면 충분합니다.

const request = require('supertest'); 
const express = require('express'); 

const app = express(); 

app.get('/user', function(req, res) { 
    res.status(200).json({ name: 'tobi' }); 
}); 

request(app) 
    .get('/user') 
    .expect('Content-Type', /json/) 
    .expect('Content-Length', '15') 
    .expect(200) 
    .end(function(err, res) { 
    if (err) throw err; 
    }); 
:

은 supertest 문서에서 가져온 예입니다