我正在使用strong-soap
模块从SOAP请求中获取数据。
var soap = require('strong-soap').soap;
soap.createClient(url, options, function (err, client) {
var method = client.GetInfoSOAP;
method(requestQuery, function (err, info) {
// bla bla
}
}
我收到了所需的数据。现在
我想编写单元测试用例来使用sinon
存根来模拟SOAP请求,但没有取得任何成功。任何帮助,将不胜感激。
答案 0 :(得分:0)
你想要的是控制soap
对象的createClient
。您可以使用属于以下两种类别之一的技术来实现这一目标:
Sinon项目通过proxyquire
使用链接接缝a nice page,我还详细how to do DI on the issue tracker。
要实现第一个目标,您只需在模块中执行以下操作:
module.exports._injectSoap = (fake) => soap = fake;
然后在你的测试代码中:
const fakeSoap = { createClient : sinon.stub().returns(/* ? */) }
myModule._injectSoap(fakeSoap);
...
assert(fakeSoap.createClient.calledOnce);
assert(...)
答案 1 :(得分:0)
您好我用以下代码解决了我的问题:
sinon.stub(soap, 'createClient').yields(null, {
GetInfoSOAP: function (request, cb) {
return cb(null, myDesiredData);
}
});