单元测试具有外部依赖性的ES6类

Jae*_*Lee 5 javascript unit-testing mocking mocha.js

我正在尝试为我的公司设置单元测试样板.我们的前端项目使用ES6类构建,并且依赖于我们的核心产品.前端代码通过整个其他代码块中的构建过程进行封装,该代码块基本上是一个闭包并捕获依赖项.因此,我们不必手动导入它以便使用它.

假设依赖项被调用productScope,它是一个对象,它包含一些DOM模型,内部API和参数以及每个项目所需的许多其他内容.目前,摩卡投掷ReferenceError: productScope is not defined.我怎么能模仿这个对象?或者我应该只使用实际的对象?

例:

class someClass {
    constructor() {
        const id = productScope.items[0].id
        const item = productScope.domModel.querySelector('.some-div')

        item.classList.add(`added-${id}`)
    }
}
Run Code Online (Sandbox Code Playgroud)

这包含在核心代码中,如下所示:

(function(productScope) {
    // front end code goes here
}(productScope)
Run Code Online (Sandbox Code Playgroud)

测试文件:

import someClass from '../../js/someClass'

describe('someClass', function() {
    const someClass = new someClass()
    it('should be a class', function() {
        console.log(someClass)
    });
});
Run Code Online (Sandbox Code Playgroud)

Din*_*yan 0

看起来productScope是一个全局变量。

像这样的东西应该对你有用。

import someClass from '../../js/someClass';

describe('someClass', function() {
    let someClass;

    beforeEach(() => {
        global.productScope = {
          // you mock definition
          someClass = new someClass();
        };
    });

    it('should be a class', function() {
        console.log(someClass)
    });
});
Run Code Online (Sandbox Code Playgroud)