Jasmine +测试外部依赖
Jasmine + test external dependency
我想知道使用jasmine测试外部依赖的最佳方法。
例如,我有一个覆盖模块,纯粹显示和隐藏一个背景蒙版:
function Overlay () {
}
Overlay.prototype.show = function () {
}
Overlay.prototype.hide = function () {
}
这已经设置了完整的Jasmine单元测试。
然后我有另一个模块对话框,使用覆盖模块:
function Dialog () {
}
Dialog.prototype.show() {
//do dialog stuff here, then show overlay
var overlay = new Overlay();
overlay.show();
}
我有Jasmine测试,测试除了覆盖之外的所有对话框。假设覆盖单元测试已经设置并通过,对话框测试是否只需要确保var overlay被定义并且它的show方法已经被调用?
对于关注点分离,这是最好的方法吗?
Thanks in advance
最好的方法是将你的overlay实例注入到Dialog的构造函数中。
function Dialog (overlay) {
this.overlay = overlay:
}
Dialog.prototype.show() {
this.overlay.show();
}
在你的测试中你可以简单地注入一个间谍。
var overlay = {show: jasmine.createSpy()};
var dialog = new Dialog(overlay);
dialog.show();
expect(overlay.show). toHaveBeenCalled();
另一种方法是监视全局Overlay
函数并返回一个监视show
函数的对象。
var overlay = {show: jasmine.createSpy()};
jasmine.spyOn(Overlay, 'show').andReturn(overlay);
var dialog = new Dialog(overlay);
dialog.show();
expect(overlay.show). toHaveBeenCalled();
相关文章:
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- Javascript应用程序作为具有外部依赖关系的AMD模块
- Meteor:从服务器调用相互依赖的外部 API 并将数据转储到 db
- 使用 webpack 和 jspm 以及外部依赖项
- 汇总.js:外部依赖项中未定义的对象
- Meteor 中的外部依赖项(如引导程序)
- 谷歌关闭外部依赖项
- 带有外部依赖项的Jasmine单元测试指令失败,类型错误:'[object对象]'
- Webpack外部依赖项
- 外部依赖项与preventDefault()冲突
- 使用webpack处理具有外部依赖关系的AMD库
- 流星可以在不依赖外部服务的情况下运行
- 在Angular2中添加一个依赖于组件名的外部Javascript文件
- 使用browserify将内部库依赖项导出到外部作用域
- 试图访问控制器方法外部注入的依赖项
- 为什么不认为纯函数的实现具有外部依赖关系
- 在jQuery之前加载具有jQuery依赖项的外部JavaScript
- Javascript在单元测试中用模拟版本修补现有的外部依赖模块方法
- 一个好的表单生成器(没有外部依赖)?
- 如何在Nodejs中模拟外部依赖方法回调参数