iT邦幫忙

1

[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()


尚未有邦友留言

立即登入留言