Javascript require() 多次测试文件不会再次创建对象

标签 javascript unit-testing testing require

我正在使用 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 函数之类的方法克隆该对象。

https://lodash.com/docs/4.17.15#cloneDeep

关于Javascript require() 多次测试文件不会再次创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60399706/

相关文章:

iphone - 什么时候使用单元测试?

android - 为什么我无法从 Android native 应用程序登录以测试 Facebook 用户帐户?

javascript - 如何使用 sinon 重新创建它?

JavaScript 二元运算符

javascript - 图片库解决方案

javascript - 如何使用 css、html 和 jquery 创建标记样式?

连接到 Perforce 的 Perl 单元测试 -- 连接到服务器失败;检查 $P4PORT

javascript - 无法使用 jquery 更改范围文本

unit-testing - 删除 JMockit 中先前定义的期望

ruby-on-rails - 如何使用 assert_select 来测试给定链接的存在?