gpt4 book ai didi

javascript - 使用精确参数调用的 Sinon js 检查 stub

转载 作者:搜寻专家 更新时间:2023-10-31 23:59:15 25 4
gpt4 key购买 nike

使用精确参数调用的 Sinon js 检查 stub

要求:我想测试用正确的参数调用的 ejs.renderFile。

我的函数文件:html_to_pdf_converter.js

var ejsToPdfConvert = function (template, data, callback) {

var row = data.voucher;
html = ejs.renderFile(
path.join(__dirname+'/../../views/', template),
{
data: data
},
function (error, success) {
if (error) {
callback(error, null);
} else {

var pdfPath = getPdfUploadPath(row);

htmlToPdf.convertHTMLString(success, pdfPath, function (error, success) {
if (error) {
if (typeof callback === 'function') {
callback(error, null);
}

} else {
if (typeof callback === 'function') {
callback(null, success, pdfPath);
}
}
});
}
});
};

MT测试是:html_to_pdf_converter.test.js

describe("ejs to html converter", function () {
it('ejs to html generation error', function() {

var data = {
voucher: {},
image_path: 'tmp/1.jpg',
date_format: '',
parameters: ''
};

var cb_1 = sinon.spy();
var cb_2 = sinon.spy();
var ejsStub = sinon.stub(ejs, 'renderFile');
var pathStub = sinon.stub(path, 'join');

ejsStub.callsArgWith(2, 'path not found', null);

htmlToPdfConverter.ejsToPdfConvert('voucher', data, cb_1);

sinon.assert.calledOnce(ejs.renderFile);
sinon.assert.calledOnce(path.join);
sinon.assert.calledOnce(cb_1);
sinon.assert.calledWith(ejsStub, path.join('views/', templateName), data, cb_2); //Error in this line


ejsStub.restore();
pathStub.restore();
});
});

enter image description here

最佳答案

这条线有两个问题:

sinon.assert.calledWith(ejsStub, path.join('views/', templateName), data, cb_2);

首先,您希望使用参数“data”调用 ejsStub,但是当您实际调用 renderFile 时,您将其包装成这样:{data: data}

第二个是 cb_2 不等于 function (error, success) { if (error) ... } 你实际上传递给 renderFile。

要让它正常工作,请像这样运行它:

sinon.assert.calledWith(ejsStub, path.join('views/', templateName), {data: data});

不需要传递 cb_2 或其他任何东西,因为实际的回调是在函数中定义的,不能更改。

关于javascript - 使用精确参数调用的 Sinon js 检查 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42174850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com