我正在尝试对KMS方法进行存根,就像我对其他所有对象都存根一样。我正在使用sinon。
sandbox.stub(AWS.KMS.prototype, 'decrypt')
.returns(Promise.resolve("some string"))
这将引发错误“无法对不存在的属性解密进行存根”。
我看过其他推荐使用aws-sdk-mock
的帖子,但我想避免这种情况。我已经有很多与AWS相关的单元测试,并且我不想有一套实施方式与其他方式不同。
我想出了一个解决方案...
首先,我使用的是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()
返回的对象是什么,但是它已经成功地对方法进行了存根。