如何解决sinon从4.x升级到9.x后内存溢出
我正在将 sinon
从 4.x 升级到最新的 9.x。进行版本升级后,测试命令(使用mocha
)发生内存溢出并导致进程崩溃。
我最好的猜测是,这是由于“使用 sinon
作为默认沙箱”,这是在 v5 中引入的。我已经编写了大量测试,虽然有些测试通过 sinon.createSandBox()
使用自定义沙箱,但其中大多数直接使用 sinon
存根/间谍。这样一来,测试就没有用于清理存根/间谍的 after 块,因为它们会创建服务的新实例,并且不会影响任何其他套件。
示例案例,未使用清理:
describe('static log(level,message,data)',() => {
let logMethod;
before(() => {
Logger.setupLevels(['info']);
const writer = { log: () => { } };
logMethod = sinon.spy(writer,'log');
});
it('Should call log on the default writers',() => {
Logger.info('Hi!');
return expect(logMethod.calledWith('info','Hi!')).to.be.te;
});
});
所以,我想,由于 sinon
是默认沙箱,它包含对所有间谍和存根的引用,它们之前在测试块完成后立即被清除。根据文档,我需要添加一个 after
块来执行 sinon.restore()
。我使用了全局 afterEach
来恢复默认沙箱,尽管有数千个错误,但它仍然有效。所以,我需要每个 after
的 describe
子句,而不是每个 it
。我正在寻找可以在一个地方进行配置的解决方案,而不是在每个文件中进行繁琐的工作。
这是 something 我发现这与我的需要相似,尽管它还需要我修改每个规范文件。我还想知道是否还有其他选项可以用来高效快速地执行此操作,也许是从 sinon 结束。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。