我有一家这样的工厂
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();
}));然而,我得到了一个错误,说间谍从未被呼叫过。我猜这是某种参考问题。你知道为什么我不能spyOn一个从同一工厂中的另一个函数调用的工厂函数吗?
发布于 2016-06-28 00:32:22
您需要通过callThrough()跟踪所有呼叫
spyOn(Utils, 'one').and.callThrough();发布于 2016-06-28 03:55:17
通过将工厂调整为以下代码,我可以让它工作:
angular.module('app').factory('Utils', function () {
var utils = {};
function one() {
}
function two() {
utils.one();
}
utils = {
one: one,
two: two
}
return utils;
});https://stackoverflow.com/questions/38058879
复制相似问题