在单元测试时模拟 ES6 依赖项
Mock ES6 dependencies when unit testing
假设以下两个 ES6 类:
my-random.js:
export default class MyRandom {
get() { return Math.random(); }
}
应用.js:
import MyRandom from './random';
export default class App {
get() {
let r = new MyRandom();
let total = r.get() * r.get(); // Complex calc goes here!
return total;
}
}
现在我想对app.js
get
进行单元测试。所以我想嘲笑MyRandom
.要做这个我找到了一个非常有趣的图书馆无酒精鸡尾酒
根据文档,您应该将 my-random.js更改为
import {mock} from 'mocktail';
class MyRandom {
get() { return Math.random(); }
}
export default mock(MyRandom);
在测试文件中,您必须告诉环境您正在测试,如下所示:
import {env, ENV, inject} from 'mocktail';
env(ENV.TESTING);
class MyRandomMock {
get() {
return 10; // Not so random anymore
}
}
inject('MyRandom', MyRandomMock);
你应该能够测试app.js
.不幸的是,当我尝试这个MyRandom时,从未被模拟类取代。任何帮助将不胜感激!!
我在这里在 github 上设置了一个测试项目来演示这个问题。如您所见,测试将失败:(
如果有更好的方法来实现我需要的,请告诉我!
我认为您需要在测试文件中App
之前导入setup
,这将注入 mock 并在 App 中调用它。
import './setup';
import App from '../src/app';
相关文章:
- ES6构造函数返回基类的实例
- 如何在下面的ES6循环中获得前面的文本
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- es6 相当于下划线查找位置
- 如何在Javascript/ES6中的Aurelia浏览器应用程序中使用AWS S3
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 如何将本地依赖项添加到npm项目中
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- jquery中的复选框依赖项
- 使用ES6类语法在控制器中分配依赖项
- ES6模块导入和依赖关系管理
- 当使用Angular1+ES6时,控制器函数中未定义依赖注入,控制器是一个类
- 角度1.5&ES6-依赖项注入
- 在单元测试时模拟 ES6 依赖项
- 如何处理 React 嵌套组件循环依赖?(使用 es6 类)
- 如何使用 ES6 在 AngularJs 中进行依赖注入
- 什么's angular的优点;当我可以在es6中使用导入/导出时,s依赖项注入
- 如何在不使用ES6类特性的情况下在Aurelia中注入依赖
- ES5和ES6中的Angular 2依赖注入