Mocha JS-模拟父类模块
Mocha JS - mock parent class module
背景
我有从类B
:扩展而来的类A
A = class A
...
my_inner_func: (param1) =>
return new MyHelper()
B = class B extends A
...
我想做什么
在单元测试中,my_inner_func()
应该返回MyMockHelper()
。
我尝试过的
a = rewire './a.coffee'
b = rewire './b.coffee'
a.__set__
MyHelper: MyMockHelper
b.__set__
A: a.A
但是B().my_inner_func()
返回MyHelper
而不是MyMockHelper
。
我的问题
如何模拟CoffeeScript(或JavaScript(中扩展类使用的模块?
rewire的文档没有说明类实例变量。我认为这实际上只是为了"重新连接"被测试模块的全局或顶级范围。
此外,重新布线也有一些局限性。其中,对const或babel的支持似乎是ify,所以也许可以尝试本地解决方案?
在基本级别上,mock只是覆盖或替换对象原型上的方法,所以类似的东西应该在您的测试用例中工作
// super class
class Polygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
get area() {
return this.calcArea();
}
calcArea() {
return this.height * this.width;
}
}
// superclass instance
const rect = new Polygon(10, 2);
console.log('rect', rect.area); // 20
// subclass
class Square extends Polygon {
constructor(side) {
super(side, side)
}
}
// subclass instance
const square = new Square(2);
console.log('square', square.area); // 4
// mocked calcArea of subclass
square.calcArea = function() {
return 0;
};
// result from new mocked calcArea
console.log('mocked', square.area); // 0
使用摩卡可能看起来像这样。。。
import Square from './Square';
describe('mocks', () => {
it('should mock calcArea', () => {
const square = new Square(2);
square.calcArea = function() {
return 0;
};
expect(square.area).to.equal(0);
});
});
这里有一支代码笔可以用来玩
相关文章:
- 是否可以从父类访问子类的属性
- 使用此选项选择父类内部的类
- 子类访问父类's闭包变量
- 如何通过Prototype或jquery移除子类的父类基类
- JavaScript—父类和子类/对象的此问题
- 通过使用此组件,检索父类数据
- jQuery .not() 排除特定类的父类
- 如何在 jQuery 中获取具有特定父类的所有元素的内容,并将它们传递给 GET 变量
- 如何在单击父类的另一个子类时获取子类的值
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- hover添加类-或子类:悬停以影响父类
- Typescript,需要模块作为类
- 唯一标识父类的元素
- 无法将值从实例对象传输到父类的实例数组中
- jQuery父类更改的子级
- 在父类更改时停止HTML5音频/视频
- 如何从父类中记录成员函数
- 如果类中没有子元素,则赋予父类
- 使用继承配置netzkejavascript代码(在带有参数的父类中定义js代码)
- Mocha JS-模拟父类模块