Amazon web services 如何将onCall与aws sdk mock一起使用?

Amazon web services 如何将onCall与aws sdk mock一起使用?,amazon-web-services,mocking,mocha.js,sinon,chai,Amazon Web Services,Mocking,Mocha.js,Sinon,Chai,我想让mock方法对同一方法的连续调用启用不同的响应 我发现Sinon有onCall,它允许我可以使用下面这样的存根方法 let stubCall = sandbox.stub(Math, 'random'); stubCall.onCall(0).returns(Promise.resolve(0)); stubCall.onCall(1).returns(Promise.resolve(-1)); 但我不知道如何让它在AWS模拟框架上工作

我想让mock方法对同一方法的连续调用启用不同的响应

我发现Sinon有onCall,它允许我可以使用下面这样的存根方法

        let stubCall = sandbox.stub(Math, 'random');
        stubCall.onCall(0).returns(Promise.resolve(0));
        stubCall.onCall(1).returns(Promise.resolve(-1));
但我不知道如何让它在AWS模拟框架上工作

        AWS.mock('CloudFormation', 'describeStacks', Promise.resolve(stackResponse));
我试过了

AWS.mock('CloudFormation', 'describeStacks', Promise.resolve(stackResponse)).onCall(0).returns(Promise.resolve(res));

他们两个都不工作

我发现有人提到,既然这个aws模拟使用sinon,它应该能够使用onCall。有人成功地使用它吗

由于我使用promise,我不知道还可以做些什么来返回同一方法多次调用的不同响应。

首先,将AWS SDK实例设置为模拟 配置将被调用的存根 模拟服务方法 确保您正在模拟该方法的确切签名

AWSMock.mock('CloudFormation', 'describeStacks', function(params, cb) {
  cb(null, stub());
});
我们被嘲笑的方法在起作用 首先,将AWS SDK实例设置为模拟 配置将被调用的存根 模拟服务方法 确保您正在模拟该方法的确切签名

AWSMock.mock('CloudFormation', 'describeStacks', function(params, cb) {
  cb(null, stub());
});
我们被嘲笑的方法在起作用
您可以使用不同的参数对同一方法进行多个模拟吗?假设我想使用一个mock,它用一个参数调用多次。然后还有一个mock,它用另一个参数处理其他请求。确定。请参阅
withArgs
callsFake
函数。可以使用不同的参数对同一方法进行多个模拟吗?假设我想使用一个mock,它用一个参数调用多次。然后还有一个mock,它用另一个参数处理其他请求。确定。请参阅带有args的
调用Make
函数
const stub = sinon.stub();
stub.onCall(0).returns(1);
stub.onCall(1).returns(2);
AWSMock.mock('CloudFormation', 'describeStacks', function(params, cb) {
  cb(null, stub());
});
const cf = new AWS_SDK.CloudFormation();

cf.describeStacks({}, (err, data) => {
  if(err) {
    console.err(err);
  }
  console.log(data); // 1
});

cf.describeStacks({}, (err, data) => {
  if (err) {
    console.err(err);
  }
  console.log(data); // 2
});