首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法模拟调用其他工厂方法的工厂方法

无法模拟调用其他工厂方法的工厂方法
EN

Stack Overflow用户
提问于 2016-06-28 00:26:09
回答 2查看 87关注 0票数 1

我有一家这样的工厂

代码语言:javascript
复制
angular.module('app')
.factory('Utils', function () {
   function one() {
   }

   function two() {
     one();
   }

   return {
     one: one,
     two: two
 });
});

在jasmine规范中,我尝试这样做:

代码语言:javascript
复制
it('should verify', inject(function(Utils) {
  spyOn(Utils, 'one');
  Utils.two();
  expect(Utils.one).toHaveBeenCalled();
}));

然而,我得到了一个错误,说间谍从未被呼叫过。我猜这是某种参考问题。你知道为什么我不能spyOn一个从同一工厂中的另一个函数调用的工厂函数吗?

EN

回答 2

Stack Overflow用户

发布于 2016-06-28 00:32:22

您需要通过callThrough()跟踪所有呼叫

代码语言:javascript
复制
spyOn(Utils, 'one').and.callThrough();
票数 1
EN

Stack Overflow用户

发布于 2016-06-28 03:55:17

通过将工厂调整为以下代码,我可以让它工作:

代码语言:javascript
复制
angular.module('app').factory('Utils', function () {
var utils = {};

function one() {
}

function two() {
 utils.one();
}

utils = {
 one: one,
 two: two
}

return utils;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38058879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档