【发布时间】:2015-09-18 12:20:57
【问题描述】:
我正在使用 Jasmine 对 JavaScript 进行单元测试,但遇到了一些问题。
我有一个大文件要测试,它有很多依赖项,这些依赖项有自己的依赖项。由于上述依赖关系,我想尽我所能模拟。这就是问题所在。如何模拟构造函数以使其包含属于它的方法?
假设我正在测试 createMap 类 Map 的方法:
在 createMap 方法中,它使用
Layers 类构造函数
var layers = new Layers()
我正在使用它来监视它
spyOn(window, 'Layers').and.callThrough()
这很好用,但后来在createMap 方法中它调用layers.addLayer(),其中addLayer 是Layers 类的方法。问题是因为我模拟了Layers 调用,它无法识别addLayer 方法。
有没有办法模拟它以使其包含被调用类的所有方法,或者是我唯一的选择是存根整个Layers 类还是不模拟它?
或者什么是处理这个问题的好方法?我试过spyOn(Layers, 'addLayer'),但它说没有找到方法addLayer。
如果有点混乱,我很抱歉。我不知道该怎么问。
【问题讨论】:
-
要么使用依赖注入,要么使用 Rewire 模块。
-
@limelights 你能多解释一下 Rewire 模块吗?
标签: javascript unit-testing jasmine