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)
看起来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)