节点 js 邮件喷射方法链接存根
Node js mail jet method chaining stub
在这里,我想断言回调函数是否被调用。那么我怎样才能使用 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
试试这个它会起作用,你必须指定什么 post 方法 return,然后 return 并请求 return.
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();
在这里,我想断言回调函数是否被调用。那么我怎样才能使用 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
试试这个它会起作用,你必须指定什么 post 方法 return,然后 return 并请求 return.
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();