【问题标题】:How to mock callback request with sinon?如何用 sinon 模拟回调请求?
【发布时间】: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


    【解决方案1】:

    解决了。而不是使用

    var myRequest = request.defaults({
            agent: false,
            timeout: 5000,
            jar: false,
            followRedirect: false,
            method: 'GET'
        });
    

    我在 MY_CLASS 中进行: 而是

    return myRequest({
    

    我愿意

    return request.get({}
    

    现在你可以正确地存根了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-14
      • 2017-10-24
      • 1970-01-01
      • 2023-03-29
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多