我正在使用包aws-param-store,并且正在尝试编写单元测试,这些单元测试将对getParametersByPath()的调用存根。包可以在这里找到:https://www.npmjs.com/package/aws-param-store
下面是我的sinon代码,用于存根调用。函数getParametersByPath是一个异步函数,所以我尝试返回一个已解析的promise来存根它:
const awsParameterStore = require('aws-param-store');
const sinon = require("sinon");
let sandbox = sinon.createSandbox();
// In My Test:
let parms = new Map();
parms.set("key1","value1");
parms.set("key2","value2");
sandbox.stub(awsParameterStore,'getParametersByPath').callsFake(async function(prefix){
console.log("INSIDE STUB for getParametersByPath:" + prefix);
return Promise.resolve(parms);
});我的应用程序调用函数,如下所示:
let parameters = await awsParameterStore.getParametersByPath("/foo");但是,我得到的不是伪参数的Map,而是一个空对象{}。我可以看到存根正在被调用。关于如何正确地存根以便我可以在单元测试中返回一些伪参数,您有什么想法吗?谢谢!
发布于 2020-01-17 22:30:00
我试过检查你的代码,它完全没问题。
import test from 'ava'
const awsParameterStore = require('aws-param-store');
const sinon = require('sinon')
test('test stub', async t => {
let parms = new Map();
parms.set("key1","value1");
parms.set("key2","value2");
parms.set("key3","value3");
parms.set("key4","value4");
sinon.stub(awsParameterStore, 'getParametersByPath').callsFake(async function(prefix){
console.log("INSIDE STUB for getParametersByPath:" + prefix)
return Promise.resolve(parms);
})
const res = await awsParameterStore.getParametersByPath('/some-prefix')
console.log(JSON.stringify(res))
res.forEach((value, key) => {
console.log(`[${key}]= ${value}`)
})
t.true(true)
})什么是weir:
console.log -显示结果为{}
但是,如果您逐个调试或记录值,您可以看到存根运行良好:
Debugger attached.
INSIDE STUB for getParametersByPath:/some-prefix
{}
[key1]= value1
[key2]= value2
[key3]= value3
[key4]= value4
✔ test stub更新映射:问题是如何通过JSON.stringify()记录映射。因此,您必须将映射记录为:
console.log(JSON.stringify(...res))
https://stackoverflow.com/questions/59787603
复制相似问题