不能模拟调用另一个工厂方法的工厂方法
Can't mock a factory method that calls another factory method
我有一个这样的工厂
angular.module('app')
.factory('Utils', function () {
function one() {
}
function two() {
one();
}
return {
one: one,
two: two
});
});
在jasmine规范中,我尝试这样做:
it('should verify', inject(function(Utils) {
spyOn(Utils, 'one');
Utils.two();
expect(Utils.one).toHaveBeenCalled();
}));
然而,我得到一个错误,说间谍从未被调用。我猜这是某种参考问题。知道为什么我不能发现一个工厂函数是从同一工厂的另一个函数调用吗?
您需要通过callThrough()
跟踪所有呼叫:
spyOn(Utils, 'one').and.callThrough();
我能够通过调整工厂来使其工作:
angular.module('app').factory('Utils', function () {
var utils = {};
function one() {
}
function two() {
utils.one();
}
utils = {
one: one,
two: two
}
return utils;
});
相关文章:
- AngularJS:$q.dedefe()不能由工厂方法共享
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何重用ajax工厂方法来设置$scoped变量
- angular.js:13424 ReferenceError:在控制器中使用工厂方法时未定义索引
- 如何从变量中动态调用工厂方法
- jasmine 2.0测试angularjs的工厂方法,这是一个承诺
- 如何访问控制器内的工厂方法
- 工厂方法似乎未定义
- 调用工厂方法时出现 Angularjs 错误
- 在angularjs工厂方法中添加事件侦听器无法按预期工作
- 如何在Angular中的工厂方法中返回数据
- 工厂方法没有't return-TypeError:无法读取属性'那么'的未定义
- AngularJS-错误:[$injector:pget]提供程序'函数()'必须定义$get工厂方法
- $rootScope和工厂方法
- 正在尝试调用工厂方法
- 组合多个API调用和处理后从工厂方法返回promise
- 在其他方法中使用工厂方法
- Angular的工厂方法不是一个函数(dataFactory).addContact不是一个函数)
- AngularJS提供了工厂方法的成功回调