隔离一个测试套件所需的js文件

时间:2017-12-13 15:00:57

标签: javascript requirejs mocha karma-runner google-chrome-headless

我在测试堆栈中使用karma / mocha / chrome无头。

--js 1
document.addEventListener('test', ...);
do sth more.

--js 2
 document.addEventListener('test', ...);    
 do sth more differently.

-- test suite 1
   require(test1)
   i am dispatching the test event here to test js 1

-- test suite 2
   require(test2)
   I am dispatchinh the test event here to test js 2

问题是这两个文件现在都可以全局使用。当我运行测试套件2时,js1和js2事件都将监听我的调度,因为js1仍然是全局可用的。

我的完美情景将是。将js1加载到测试套件1并将其封装在那里。 Hacky方式将在测试运行后删除它。

我的问题是,如何确保在一个测试套件的范围内本地加载所需的js文件?基本上只加载特定测试套件的nesseccary文件,并使它们与其他测试套件隔离。

感谢。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,您希望将模块的范围限定在相关的测试文件中吗?

如果是这样,那么您可以加载模块:

const sharedModule = require('some/shared/module');

describe('some test', function() {
    const scopedModule = require('some/path/to/module');

    it('should...', function() {
        // Test code...
    })

)

这将导致您的模块仅在测试开始执行时加载,并在该块内限定。