typescript - 如何存根从函数返回的对象以处理来自该对象的任何未来方法调用
问题描述
我有一个打字稿应用程序,其中有以下两行代码:
const obj = await getCredentials(name, role);
await obj.getPromise();
getCredentials
返回类型为Promise<AWS.ChainableTemporaryCredentials>
( https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html ),因此 obj 的类型为 AWS.ChainableTemporaryCredentials。在编写此代码的单元测试时,我包含了一行console.log(JSON.stringify(obj))
并在此字符串(表示 obj 对象)上使用 JSON.parse 为该getCredentials
方法创建一个存根。存根如下所示(注意,由于工作场所的机密性,我无法显示该值)。
const credentialsStub: AWS.ChainableTemporaryCredentials = JSON.parse(
`actual value replaced`
);
const sinonStub = sinon.stub(awsIAM, 'getCredentials');
sinonStub.resolves(credentialsStub);
但是,当我尝试运行测试时,我收到一个错误,说这obj.getPromise()
不是一个函数,我想这是有道理的,因为我用来制作的字符串中没有指定 getPromise() 方法credentialsStub
,但它绝对是一个ChainableTemporaryCredentials
该类可以使用的方法( https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ChainableTemporaryCredentials.html)。有谁知道如何正确地存根/监视该getPromise
方法,或者通常存根/监视本身被存根的返回对象的方法?
解决方案
推荐阅读
- python - 通过swift运行python脚本
- reactjs - 如何从异步函数中获取 valeu 并将其传递给组件( React )?
- oauth-2.0 - google oauth 2.0 应用验证的主页和隐私政策链接输入内容
- sublimetext3 - Sublime Text Pretty JSON:pretty_on_save 不起作用
- rust - chrono 杀死了我的 Rust WebAssembly 函数
- python - 无法在 Heroku 上部署 Django 应用程序:“退出状态为 1 的命令出错:python setup.py egg_info 检查日志以获取完整的命令输出。”
- swagger - 根据 Swagger Open API 3.0 是否可以重用组件参数作为 requestBody 属性?
- android - 从 Unity C# 脚本启动 AppCompatActivity
- postgresql - 无法在 ubuntu 中联系 postgresql 应用程序服务器
- javascript - 为什么我的发射只在一个方向工作?