我有以下测试:(简化)
var request = require('request');
var routes = require('../routes.js');
describe('routes', function() {
var req, res;
beforeEach(function(){
req = { headers: {}, url: 'http://127.0.0.1', params: {} };
res = {
sendFile: function() { return '' },
render: function() { return '' },
json: function() { return {} }
};
jasmine.createSpy(request, 'get')
});
it('should render static page', function() {
routes.show(req, res);
expect(request.get).toHaveBeenCalled();
})
});和routes.js内容:
module.exports = {
show: function(req, res) {
request.get(apiUrl('v1/users/' + req.params.name), apiErrorsHandler(function(body) {
res.render('users/show.jade', body);
}, function() {
res.json({});
}));
}
}如果重要的话,我正在使用gulp-jasmine,但问题还是会发生,即使我使用jasmine-node。
每次运行测试时,我都会收到以下错误:
Error: Expected a spy, but got Function.在线:
expect(request.get).toHaveBeenCalled();你知道为什么会这样吗?
我尝试了以下解决方案:Expected a spy, but got Function,但没有成功,因为.get直接附加到request,所以引用是undefined。
发布于 2015-03-16 15:19:33
jasmine.createSpy不是那样工作的。
您想要的是创建一个间谍并将其分配给请求对象的get属性。
req = { headers: {}, url: 'http://127.0.0.1', params: {}, get: jasmine.createSpy('reqGetSpy')};https://stackoverflow.com/questions/26712365
复制相似问题