javascript - 如何使用 ES6 模块模拟单元测试的依赖关系

标签 javascript unit-testing ecmascript-6 traceur jestjs

我正在尝试使用 webpack + traceur 摆弄 Ecmascript 6 模块以转换为 ES5 CommonJS,但我无法成功地对它们进行单元测试。

是否有更好的框架来对 ES6 模块进行单元测试?

最佳答案

我已经开始在我的测试中使用 import * as obj 风格,它将模块中的所有导出作为对象的属性导入,然后可以模拟该对象。我发现这比使用 rewire 或 proxyquire 或任何类似技术要干净得多。

我不能代表问题中使用的框架 traceur,但我发现它适用于我的 Karma、Jasmine 和 Babel 设置,我将其发布在这里,因为这似乎是此类最常见的问题。

我在需要模拟 Redux 操作时最常使用这种策略。这是一个简短的例子:

import * as exports from 'module-you-want-to-mock';
import SystemUnderTest from 'module-that-uses-above-module';

describe('your module', () => {
  beforeEach(() => {
    spyOn(exports, 'someNamedExport');  // mock a named export
    spyOn(exports, 'default');          // mock the default export
  });
  // ... now the above functions are mocked
});

关于javascript - 如何使用 ES6 模块模拟单元测试的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323031/

相关文章:

javascript - 如何使用数组和 && 条件构建长 If 条件?

javascript删除动态生成tr td中的最后一个子项

java - Hamcrest 或assertj : test element in list with requirements

javascript - ES6 模板文字是否比字符串连接更快?

javascript - 使用 React Native 将数据添加到现有 JSON 文件

javascript - JavaScript 中的 Nullish 合并运算符

ruby-on-rails - 测试和建立连接

unit-testing - 为什么$provide只能在 'angular.mock.module'函数中使用,$q只能在 'angular.mock.inject'函数中使用?

如果设置了 session 变量,Javascript React 重定向

typescript - 在 Angular2 TypeScript 方法中指定返回类型