【发布时间】:2016-10-19 21:48:12
【问题描述】:
我正在使用rewire 来测试我的节点控制器。我有以下端点,它使用request 来获取一些数据。
exports.myGetEndpoint = function(req, res) {
return request.get({
url: 'http://baseURL/api/myGetEndpoint',
headers: {
authorization: { //etc }
},
json: true
})
.then(function(data) {
res.status(200).json(data.objects);
});
};
我想测试当我从控制器调用 get 方法时,request 会使用正确的参数被调用,但我不知道如何根据请求“存根”或“间谍”。
var Promise = require('bluebird');
var rewire = require('rewire');
var controller = rewire('../../controllers/myGetEndpoint.js');
var request = {
get: sinon.stub()
};
// Use rewire to mock dependencies
controller.__set__({
request: request
});
describe('myGetEndpoint', function() {
var json;
var req;
var res;
beforeEach(function(done) {
json = sinon.spy();
req = { headers: {} };
res = {
status: sinon.stub().returns({
json: json
})
};
controller.myGetEndpoint(req, res).then(function() {
done();
});
});
it('should call the correct request arguments', function() {
// lost
});
});
【问题讨论】:
标签: node.js unit-testing express