首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用sinon来存根aws-param-store getParametersByPath()

如何使用sinon来存根aws-param-store getParametersByPath()
EN

Stack Overflow用户
提问于 2020-01-17 20:43:17
回答 2查看 144关注 0票数 0

我正在使用包aws-param-store,并且正在尝试编写单元测试,这些单元测试将对getParametersByPath()的调用存根。包可以在这里找到:https://www.npmjs.com/package/aws-param-store

下面是我的sinon代码,用于存根调用。函数getParametersByPath是一个异步函数,所以我尝试返回一个已解析的promise来存根它:

代码语言:javascript
运行
复制
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);
});

我的应用程序调用函数,如下所示:

代码语言:javascript
运行
复制
let parameters = await awsParameterStore.getParametersByPath("/foo");

但是,我得到的不是伪参数的Map,而是一个空对象{}。我可以看到存根正在被调用。关于如何正确地存根以便我可以在单元测试中返回一些伪参数,您有什么想法吗?谢谢!

EN

Stack Overflow用户

发布于 2020-01-17 22:30:00

我试过检查你的代码,它完全没问题。

代码语言:javascript
运行
复制
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 -显示结果为{}

但是,如果您逐个调试或记录值,您可以看到存根运行良好:

代码语言:javascript
运行
复制
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))

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59787603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档