javascript - ES6 单元测试——导入和导出模块

标签 javascript unit-testing ecmascript-6 karma-jasmine babeljs

我刚刚建立了一个 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 Calculator{

    add(op1,op2){
        return op1 + op2;
    }
    subtract(op1,op2){
        return op1 - op2;
    }
}

然后我需要在测试文件中导入它:

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 模块允许您保持代码隔离。通过不将类 Calculator 放在全局范围内,您可以在其他地方引用另一个名为 Calculator 的类。如果您正在使用模块,则没有自动导入类的好方法,因为您需要定义您所引用的文件。

关于javascript - ES6 单元测试——导入和导出模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32569594/

相关文章:

c# - 使用返回随机结果的函数进行单元测试

javascript - 是否可以将 promise 包装在生成器中?

javascript - 即使没有订阅,Observable 内的 http 请求也会发生

javascript - 将值从表传递到输入文本 Angularjs

javascript - 使用替换和正则表达式从此字符串中删除字符

ios - 从命令行自动执行 iOS monotuch GUI 测试

javascript - 数组如何按两个属性分组?

javascript - Jquery 创建/读取关联数组

javascript - Netbeans javascript 评论

javascript - Ionic App 的 Karma 单元测试。错误 : [ng:areq] Argument 'StockCtrl' is not a function, 未定义