【发布时间】:2019-12-15 06:34:08
【问题描述】:
这是我运行良好的简单应用 temp.js:
var request = require('request');
var myRequest = request.defaults({
agent: false,
timeout: 5000,
jar: false,
followRedirect: false,
method: 'GET'
});
var MY_CLASS = {
getData: function (req, res, next) {
return myRequest({
uri: 'https://jsonplaceholder.typicode.com/todos/1',
}, function (error, data) {
if (error) {
return next(error, null);
}
return next(null, data);
});
}
};
module.exports = MY_CLASS;
我从 temp2.js 中调用它:
const MY_CLASS = require('./temp.js');
MY_CLASS.getData('test', 'test', function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data.statusCode);
}
});
现在尝试在我的单元测试中使用 sinon,但我如何真正正确地存根/模拟它?不确定我是否应该存根请求或导出 myRequest... 我需要从https://jsonplaceholder.typicode.com/todos/1 获得虚假回复。在这里我存根 getData 但不是请求本身.. 它可以工作但我如何存根请求?
const sinon = require("sinon");
const MY_CLASS = require('../temp.js');
describe('test', function(done) {
before(()=>{
sinon
.stub(MY_CLASS, 'getData')
.yields(null, {statusCode: 200});
});
after(()=>{
MY_CLASS.getData.restore();
});
it.only('test', function(done) {
function cb(err, data) {
data.statusCode.should.equal(200);
done();
}
MY_CLASS.getData('test', 'test', cb);
});
});
【问题讨论】:
标签: node.js unit-testing mocha.js sinon