gpt4 book ai didi

node.js - 使用 sinon 和 proxyquire 定位嵌套方法

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:14 25 4
gpt4 key购买 nike

对于 nodejs 的以下片段代码,我如何 stub send方法使用 proxyquiresinon ,假设这属于文件 index.js ?我尝试了很多方法,但总是出错。

var emailjs = require("emailjs");
emailjs.server.connect({
user: obj.user,
password: obj.password,
host: obj.host,
port: obj.port,
tls: obj.tls,
ssl: obj.ssl
})
.send(mailOptions, function(error, message){
if (error) {
console.log("ERROR");
context.done(new Error("There was an error sending the email: %s", error));
return;
} else {
console.log("SENT");
context.done();
return;
}
});

到目前为止,在我的测试中,我有以下设置,但得到 Uncaught TypeError: Property 'connect' of object #<Object> is not a function .

readFileStub = sinon.stub();
sendStub = sinon.stub();
connectStub = sinon.stub().returns(sendStub);

testedModule = proxyquire('../index', {
'fs': {readFile: readFileStub},
'emailjs': {
'server': {
'connect': {
'send': sendStub
}
}
}
});

最佳答案

看起来你已经快到了。只需分配 connectStub 即可:

readFileStub = sinon.stub();
sendStub = sinon.stub();
connectStub = sinon.stub().returns({
send: sendStub
});

testedModule = proxyquire('../index', {
'fs': {readFile: readFileStub},
'emailjs': {
'server': {
'connect': connectStub
}
}
});

connectStub被调用时,它将返回sendStub,而sendStub将被立即调用。

编辑:

对,抱歉 - 让 connectStub 返回一个对象。

关于node.js - 使用 sinon 和 proxyquire 定位嵌套方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972492/

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