Я использую пакет NPM Jose (версия v1.28.0) в одном из моих приложений NodeJS. Недавно мой обновленный бот попытался обновить его до следующей основной версии 2.0.2. К сожалению, мои модульные тесты с Sinon больше не работают с этой версией. Само мое приложение работает без проблем ...

Я получаю следующую ошибку:

TypeError: Cannot redefine property: decode
    at Function.defineProperty (<anonymous>)

Это код, который вызывает ошибку:

 import { JWT, JWK } from 'jose';
 // other code ...
 sandbox.stub(JWT, 'decode').returns(decodedResult);

Я не понимаю, что мне нужно изменить в модульном тесте, чтобы он снова заработал. Если метод декодирования не заглушен, он всегда будет выдавать ошибку с моими поддельными входными значениями.

1
Shamshiel 30 Сен 2020 в 08:30

2 ответа

Лучший ответ

Sinon работает, переопределяя свойства, свойство было намеренно не перечислимым, но в процессе также не настраивается. Скоро это будет исправлено в версии 2.0.3.

1
Filip Skokan 29 Окт 2020 в 19:44

Если вы посмотрите в документ объекта JWT, он не имеет функции «декодирования», поэтому вы не можете его заглушить.

https://github.com/panva/jose/blob/master/docs/README.md#jwt-json-web-token

-1
York Chen 30 Сен 2020 в 06:37