Node.js 节点js为方法链接生成测试存根

Node.js 节点js为方法链接生成测试存根,node.js,mocha.js,sinon,chai,mailjet,Node.js,Mocha.js,Sinon,Chai,Mailjet,我的函数是sendMail我想存根函数mailjet,它有一个方法链mailjet.post('send')。请求 我想断言在邮件成功或失败时调用回调 那么,我如何存根这个方法链呢 var sendMail = function (templateName, callback) { // From template name find template id of mailjet mailingExternalTemplateModel.findMailingTemplateId(templa

我的函数是sendMail我想存根函数mailjet,它有一个方法链mailjet.post('send')。请求

我想断言在邮件成功或失败时调用回调

那么,我如何存根这个方法链呢

var sendMail = function (templateName, callback) {

// From template name find template id of mailjet
mailingExternalTemplateModel.findMailingTemplateId(templateName, function (err, result) {

        const request = mailjet
            .post("send")
            .request(params)
        request
            .then((result) => {
                if (typeof callback === 'function') {
                    callback(null, result.body);
                }

            })
            .catch((err) => {
                if (typeof callback === 'function') {
                    callback(err, null);
                }
            })
    } else {
        callback(err, null);
    }
});};
我已经做了

    sinon.stub(mailjet, 'post').withArgs('send').returns(mailjetClient);

    sinon.stub(mailjetClient, 'request').returns(Promise);

但是我得到了错误类型错误:试图将未定义的属性请求包装为函数

我是负责每个Mailjet包装的开发人员,包括NodeJS包装

实际上,我正在更新它们中的每一个,并添加了一些功能,例如打电话(或不打电话)的可能性。对于NodeJS版本,测试版将在明天晚上部署到npm上

一旦beta版可用,我将用您必须进行的修改(很少)来更新这个答案

如果你好奇,你仍然可以看看我所做的修改: