Sinon的存根KMS

问题描述 投票:1回答:1

我正在尝试对KMS方法进行存根,就像我对其他所有对象都存根一样。我正在使用sinon。

sandbox.stub(AWS.KMS.prototype, 'decrypt')
    .returns(Promise.resolve("some string"))

这将引发错误“无法对不存在的属性解密进行存根”。

我看过其他推荐使用aws-sdk-mock的帖子,但我想避免这种情况。我已经有很多与AWS相关的单元测试,并且我不想有一套实施方式与其他方式不同。

amazon-web-services unit-testing sinon aws-kms
1个回答
0
投票

我想出了一个解决方案...

首先,我使用的是AWS方法的Promise类型:

KMS.decrypt(params).promise()

因此,我正在执行以下操作:

sandbox = sinon.createSandbox()
const mKMS = {
  decrypt: sandbox.stub().returns({
    promise: () => {Promise.resolve({
      Plaintext: "some string",
      CiphertextBlob: Buffer.from("some string", 'utf-8')
    })}
  })
}
sandbox.stub(AWS, 'KMS').callsFake(() => mKMS)

而且,我仍然承认我仍然在确切地计算出从Promise.resolve()返回的对象是什么,但是它已经成功地对方法进行了存根。

© www.soinside.com 2019 - 2024. All rights reserved.