Sinon stub throws "TypeError: Cannot redefine property"

Sinon stub throws "TypeError: Cannot redefine property"

我正在使用 NPM 包 Jose (version v1.28.0) in one of my NodeJS applications. Recently my renovate bot tried to update it to the next major version 2.0.2. Sadly my unit tests with Sinon 不再适用于此版本。我的应用程序本身没有任何问题...

我收到以下错误:

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

这是触发错误的代码:

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

我不知道我需要在单元测试中更改什么才能使其再次运行。如果 'decode' 方法没有被存根,它总是会用我的假输入值抛出错误。

如果你查看JWT对象的文档,它没有“解码”功能,所以你不能存根。

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

sinon 通过 re-defining 属性工作,属性 是有意设置的 non-enumerable 但在此过程中也不可配置。这很快将在 v2.0.3

中修复