[Unit Test]如何mock AWS SDK method, 传回不同的 mock responds

我想mock AWS API call,并且每次呼叫后,传回不同的值
我目前知道Sinon提供Oncall这个方法,可以让每次呼叫传回不同的值

let stubCall = sandbox.stub(Math, 'random');stubCall.onCall(0).returns(Promise.resolve(0));stubCall.onCall(1).returns(Promise.resolve(-1));

但我目前用了一个框架,aws-sdk-mock,这个框架主要是模拟AWS SDK的API呼叫,使用方法如下:

AWS.mock('CloudFormation', 'describeStacks', Promise.resolve(stackResponse));
然后我试着让它使用OnCall 用了以下两种方法都失败
1.
AWS.mock('CloudFormation', 'describeStacks', Promise.resolve(stackResponse)).onCall(0).returns(Promise.resolve(res));

let mockCall = AWS.mock('CloudFormation', 'describeStacks', Promise.resolve(res));
mockCall.onCall(0).returns(Promise.resolve(res));
both of them didn't work.

但我看GitHub上的讨论是说,https://github.com/dwyl/aws-s...
因为这个框架本身是Hook Sinon,所以他应该可以用OnCall这个method.

请问有人知道如何使用吗? 或者有其他方法可以让我mock AWS SDK API Call 并传回不同的值吗?

使用语言是NodeJS 使用的test runner 是mocha
目前网上看到的几乎都是Callback的,但我是用promise(). AWS去年支援了所有方法都可以用.promise() 所以mocke回的结果也必须要是promise()


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章