这是我简单的应用程序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);
});
});
答案 0 :(得分:0)
已解决。而不是使用
var myRequest = request.defaults({
agent: false,
timeout: 5000,
jar: false,
followRedirect: false,
method: 'GET'
});
我在MY_CLASS中这样做: 代替
return myRequest({
我愿意
return request.get({}
现在您可以正确地存根了