我有服务器应该在开始前执行一些工作,并记录成功。例如:
const http = require('http');
function startServer() {
const server = http.createServer((req, res) => {
res.write('hello\n');
res.end();
}).listen(3000);
console.log('server is ready');
}
//as 'job' we will use timer
setTimeout(startServer, 10000);
我需要创建集成测试来检查:
答案 0 :(得分:0)
Wyck,你建议使用观察者模式吗?类似的东西:
describe('app', () => {
let orchestrator;
let process;
beforeAll(() => {
jest.setTimeout(50000);
orchestrator = (function () {
const listeners = [];
let serverIsReady = false;
return {
addListener: fn => {
listeners.push(fn);
fn(serverIsReady);
},
setServerIsReady: status => {
serverIsReady = status;
listeners.forEach(item => item(status));
},
}
})();
});
test('server is ready', done => {
process = spawn('node', ['./app.js']);
process.stdout.on('data', data => {
expect(`${data}`).toContain('server is ready');
orchestrator.setServerIsReady(true);
done();
});
});
test('server return response', done => {
orchestrator.addListener(serverIsReady => {
if (serverIsReady) {
http.get('http://localhost:3000', res => {
res.on('data', chunk => {
expect(`${chunk}`).toContain('hello');
done();
});
});
}
});
});
});