You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jasmine中测试SSM的getParameter方法?附代码报错问题

解决SSM getParameter模拟时的TypeError问题

这个问题很常见,核心原因是你模拟ssm.getParameter时返回的ssmParams是普通对象,但AWS SDK v2的getParameter方法调用后返回的是一个Request对象,这个对象自带.promise()方法。你直接返回普通对象,自然会出现Cannot read property 'promise' of undefined的报错。

下面是两种可行的解决方法:

方法一:模拟带有promise方法的返回对象

你需要让spy返回一个包含promise方法的对象,这个方法返回一个resolved的Promise,值就是你准备的模拟数据:

// 假设你用的是Jest测试框架
const mockSsmParams = { /* 你的模拟参数数据 */ };

spyOn(ssm, 'getParameter').and.returnValue({
  promise: () => Promise.resolve(mockSsmParams)
});

这样当你的业务代码调用.promise()时,就能正确拿到Promise并await它的结果。

方法二:优化原代码(可选但推荐)

另外注意到你的原代码里给getParameter传了回调函数,但同时又调用了.promise()——这其实是冗余的。AWS SDK v2中,当你使用.promise()时,不需要传入回调,回调是用于传统的异步回调模式的。你可以把代码简化成:

const ssmParameterData = await ssm.getParameter(params).promise();

这样代码更简洁,也不会影响后续的测试逻辑。

额外提示

如果你用的是AWS SDK v3,写法会不一样(v3本身返回Promise,不需要.promise()调用),但从你的报错和代码来看,应该是使用的v2版本,所以上面的方案完全适用。

内容的提问来源于stack exchange,提问作者dpatryas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:12:41