2

在这里,我想断言回调函数是否被调用。那么我该如何使用 sinon js 来做到这一点。请建议。

var send = function (templateId, callback) {

    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);
    }
};

我试过如下:

var mailjetClient = require('../../node_modules/node-mailjet/mailjet-client');

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

我收到以下错误:

TypeError: Attempted to wrap undefined property request as function
4

1 回答 1

3

试试这个它会起作用,你必须指定什么 post 方法返回,然后返回并请求返回。

   var cb = sinon.spy();

   var obj = {successId: 12121};  // Any success response

   var then = sinon.stub().callsArgWith(0, obj).returns(
        {
            catch: sinon.stub()
        }
    );

    var request = sinon.stub().returns(
        {
            then: then
        }
    );

    sinon.stub(mailjet, "post", () => {
        return {
            request: request
        };
    });

    mailSender.send(templateName, cb);
    sinon.assert.calledOnce(cb);
    mailjet.post.restore();
于 2017-02-13T11:01:18.947 回答