我正在尝试使用 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/