Заглушка KMS с Sinon - PullRequest
       54

Заглушка KMS с Sinon

1 голос
/ 16 июня 2020

Пытаюсь заглушить методы KMS, вроде все остальное заглушил. Я использую sinon.

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

Это вызывает ошибку «Невозможно заглушить расшифровку несуществующего свойства».

Я видел другие сообщения, в которых рекомендуется использовать aws-sdk-mock, но я хочу избежать этого. У меня уже есть много модульных тестов, связанных с AWS, и я не хочу, чтобы один набор был реализован иначе, чем другие.

1 Ответ

0 голосов
/ 16 июня 2020

Я нашел решение ...

Во-первых, я использую тип обещания AWS методов:

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() - но он успешно заглушает метод.

...