【问题标题】:ES6 unit testing - importing and exporting modulesES6 单元测试 - 导入和导出模块
【发布时间】:2015-12-10 17:42:17
【问题描述】:

我刚刚建立了一个 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 客户端文件中的类,例如:

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);
    });
});

我无法理解为什么在这种情况下通常需要导入和导出。有没有办法解决这个问题,例如自动导入和导出模块而不指定它们?必须对所有内容都使用导入和导出似乎很容易妨碍工作流程。我错过了什么?

【问题讨论】:

  • 您是否想使用模块?听起来您宁愿只使用全局变量,否则,您如何指定要使用的模块?
  • @Juan Mendes 我想使用全局变量,而不必导入或导出,但我不知道如何在我的测试文件和我的客户端文件之间进行链接。
  • 我强烈建议使用模块而不是全局变量。模块不应妨碍您的工作流程——它们应该是您工作流程的一部分。另一种选择是在不使用模块的情况下连接文件(并且可以选择缩小),但这对我来说是个坏主意。
  • @dvlsg @Juan Mendes 那么这是在 ES6 中测试的标准做法吗?从现在开始,一切都应该在class?
  • 不一定。您不仅可以导入/导出类。例如,export default function() { /* ... */ } 是完全有效的语法,您可以在另一个文件中使用import someFunc from './file_with_export.js'。您可以对任何变量执行相同的操作。如果您有想要进行单元测试的内容,我会将其导出,这样它不仅可以导入您的测试套件,还可以导入您的主代码库。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2017-12-09
    相关资源
    最近更新 更多