我想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()