ES6 单元测试——导入和导出模块
ES6 unit testing - importing and exporting modules
我刚刚设置了一个 ES6 测试系统,主要遵循 this tutorial 使用 package.json 中的以下依赖项:
"devDependencies": {
"babel-core": "^5.8.24",
"babel-loader": "^5.3.2",
"jasmine": "^2.3.2",
"jasmine-core": "^2.3.4",
"karma": "^0.13.9",
"karma-jasmine": "^0.3.6",
"karma-jasmine-html-reporter-livereload": "^1.0.0",
"karma-phantomjs-launcher": "^0.2.1",
"karma-webpack": "^1.7.0",
"phantomjs": "^1.9.18",
"webpack": "^1.12.1"
}
现在,为了 运行 我在 ES6 中的测试,我需要 export
来自客户端文件的 class,例如:
export class Calculator{
add(op1,op2){
return op1 + op2;
}
subtract(op1,op2){
return op1 - op2;
}
}
然后我需要在测试文件中import
它:
import {Calculator} from './es6-testing';
describe('Calculator', () => {
it('should add two numbers', () => {
let calculator = new Calculator();
let sum = calculator.add(1,4);
expect(sum).toBe(5);
});
it('should subtract two numbers', () => {
let calculator = new Calculator();
let sum = calculator.subtract(4,1);
expect(sum).toBe(3);
});
});
我无法理解为什么在这种情况下通常需要导入和导出。有没有办法解决这个问题,例如自动导入和导出模块而不指定它们?必须对所有内容使用导入和导出似乎很容易妨碍工作流程。我错过了什么?
ES6 模块让你的代码保持独立。通过不将 class Calculator
放置在全局范围内,您可以在其他地方引用名为 Calculator
的不同 class。如果您正在使用模块,则没有自动导入 class 的好方法,因为您需要定义您所指的文件。
我刚刚设置了一个 ES6 测试系统,主要遵循 this tutorial 使用 package.json 中的以下依赖项:
"devDependencies": {
"babel-core": "^5.8.24",
"babel-loader": "^5.3.2",
"jasmine": "^2.3.2",
"jasmine-core": "^2.3.4",
"karma": "^0.13.9",
"karma-jasmine": "^0.3.6",
"karma-jasmine-html-reporter-livereload": "^1.0.0",
"karma-phantomjs-launcher": "^0.2.1",
"karma-webpack": "^1.7.0",
"phantomjs": "^1.9.18",
"webpack": "^1.12.1"
}
现在,为了 运行 我在 ES6 中的测试,我需要 export
来自客户端文件的 class,例如:
export class Calculator{
add(op1,op2){
return op1 + op2;
}
subtract(op1,op2){
return op1 - op2;
}
}
然后我需要在测试文件中import
它:
import {Calculator} from './es6-testing';
describe('Calculator', () => {
it('should add two numbers', () => {
let calculator = new Calculator();
let sum = calculator.add(1,4);
expect(sum).toBe(5);
});
it('should subtract two numbers', () => {
let calculator = new Calculator();
let sum = calculator.subtract(4,1);
expect(sum).toBe(3);
});
});
我无法理解为什么在这种情况下通常需要导入和导出。有没有办法解决这个问题,例如自动导入和导出模块而不指定它们?必须对所有内容使用导入和导出似乎很容易妨碍工作流程。我错过了什么?
ES6 模块让你的代码保持独立。通过不将 class Calculator
放置在全局范围内,您可以在其他地方引用名为 Calculator
的不同 class。如果您正在使用模块,则没有自动导入 class 的好方法,因为您需要定义您所指的文件。