我正在尝试使用aws sdk mock在node js中模拟KMS,但对我来说,这根本不是模拟。它调用真实的KMS并获取实际的加密密钥。
const AWS = require('aws-sdk-mock');
const params = {
CiphertextBlob: Buffer.from(someEncryptedKey, 'base64')
};
AWS.mock('KMS', 'decrypt', function (params, callback) {
callback(null, new Buffer('116')[37, 80, 68, 56, 78, 87]);
});我不确定我的代码中有什么错误。我找不到任何好的模仿KMS的例子。我可以尝试Sinon,但我不想这样做,因为理想情况下,这应该会产生模仿的魔力。任何帮助都将不胜感激。
发布于 2020-03-17 03:42:06
测试中没有任何错误。当你尝试模拟,并且你的API版本在你的代码中被全局声明时,你会看到这个问题,这是模拟的问题。
我只是在函数内的实际代码中移动了版本声明。我不知道为什么会发生这种情况,但在函数内移动API版本后,mocking开始工作。
我从来不喜欢更改单元测试的代码,但使用AWS SDK mock时,我不得不这样做。
const encryptDecrypt =异步密钥=> {
//这需要在函数中//如果这是全局声明的,并且您试图为它编写单元测试,则永远不会起作用。const kms =新AWS.KMS({apiVersion:'2014-11-01'});
//加密
//解密};
https://stackoverflow.com/questions/60655480
复制相似问题