我正在使用 mocha 为 javascript API 编写一些测试。我在运行测试之前启动了我的项目,并且我意识到需要一个文件在多个测试中创建一个对象,例如如下所示:
it('should return false 1', () => {
const testObject = require(./file.json)
delete testObject.neededAttribute1;
expect(function(testObject)).to.be.false;
});
it('should return false 2', () => {
const testObject = require(./file.json)
delete testObject.neededAttribute2;
expect(function(testObject)).to.be.false;
});
Javascript 不会在第二个测试中创建对象 testObject
,而是使用第一个测试中之前所做的更改,如果我不手动恢复该对象,那么我的测试将无法使用测试执行后发生了变化。
我知道 JavaScript 这样做是为了更有效,而不是一直加载同一个文件,而是只加载一次。
但是我如何进行测试,其中我有一个包含正确对象的文件,并且我想在每个测试中一一引入小的修改?
有什么想法吗?
最佳答案
克隆对象。
在 before 函数中导入对象
https://futurestud.io/tutorials/mocha-global-setup-and-teardown-before-after
然后在每个函数或 beforeEach 函数中,使用 lodash 的 cloneDeep 函数之类的方法克隆该对象。
关于Javascript require() 多次测试文件不会再次创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60399706/