Javascript 使用node mock http测试服务时不发出任何事件
我想通过调用它的控制器来测试一个简单的服务。我想我应该使用创建一个模拟请求,并查看响应的结果。然而,尽管有所有的文档和示例代码,我还是无法得到发出任何事件(“end”、“send”甚至“error”)的响应,因此无法知道何时测试输出 下面是一个简单的函数(使用Express 4.*): 这是我的测试(茉莉): 我完成此测试的唯一方法(不抛出超时错误)是取消对Javascript 使用node mock http测试服务时不发出任何事件,javascript,node.js,unit-testing,mocking,Javascript,Node.js,Unit Testing,Mocking,我想通过调用它的控制器来测试一个简单的服务。我想我应该使用创建一个模拟请求,并查看响应的结果。然而,尽管有所有的文档和示例代码,我还是无法得到发出任何事件(“end”、“send”甚至“error”)的响应,因此无法知道何时测试输出 下面是一个简单的函数(使用Express 4.*): 这是我的测试(茉莉): 我完成此测试的唯一方法(不抛出超时错误)是取消对setTimeout行的注释-显然不是正确的方法。当我这样做时,res中的数据正是我所期望的-这意味着除了事件触发之外,一切都正常 我必须做
setTimeout
行的注释-显然不是正确的方法。当我这样做时,res
中的数据正是我所期望的-这意味着除了事件触发之外,一切都正常
我必须做什么才能在res
上触发事件
PS:有可能这是一些ES6进口雪纳根,我尝试了以下方法:
let res = httpMock.createResponse({EventEmitter: require('events').EventEmitter});
同样的结果
PPS:在repo上打开在调用getServiceHealth(req,res)之前确保已添加侦听器 在打开一个窗口后,我得到了答案: 属性名为
eventEmitter
-而不是eventEmitter
。所以我应该写:
var res=httpMocks.createResponse({eventEmitter:eventEmitter});
有点混乱,但我希望他们会修改文档以反映这一点。该问题仍然悬而未决(截至2015年12月29日)。感谢您的尝试,但这不是问题所在。我将用正确的答案结束这个问题。
import {EventEmitter} from 'events';
import httpMock from 'node-mocks-http';
import {getServiceHealth} from '../../lib/controllers/health/';
describe('Service health integration tests', () => {
it('should get health', done => {
let req = httpMock.createRequest({url: '/health'});
let res = httpMock.createResponse({EventEmitter: EventEmitter});
getServiceHealth(req, res);
res.on('end', () => {
console.log(res._getData());
done();
});
res.on('send', () => {
console.log(res._getData());
done();
});
//setTimeout(() => {console.log(res._getData()); done();}, 1000);
});
});
let res = httpMock.createResponse({EventEmitter: require('events').EventEmitter});
import {EventEmitter} from 'events';
import httpMock from 'node-mocks-http';
import {getServiceHealth} from '../../lib/controllers/health/';
describe('Service health integration tests', () => {
it('should get health', done => {
let req = httpMock.createRequest({url: '/health'});
let res = httpMock.createResponse({EventEmitter: EventEmitter});
res.on('end', () => {
console.log(res._getData());
done();
});
res.on('send', () => {
console.log(res._getData());
done();
});
getServiceHealth(req, res);
//setTimeout(() => {console.log(res._getData()); done();}, 1000);
});
});