茉莉花不会对功能创建间谍



我有以下测试:(简化

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();

你知道为什么会这样吗?

我尝试过以下解决方案:预期是间谍,但得到了Function,但没有成功,因为.get直接连接到request,所以引用是undefined

jasmine.createSpy的工作方式不太一样。。

您想要的是创建一个spy并将其分配给请求对象的get属性。

req = { headers: {}, url: 'http://127.0.0.1', params: {}, get: jasmine.createSpy('reqGetSpy')};

最新更新