【问题标题】:Can't mock a factory method that calls another factory method无法模拟调用另一个工厂方法的工厂方法
【发布时间】:2016-06-27 16:26:09
【问题描述】:

我有这样的工厂

angular.module('app')
.factory('Utils', function () {
   function one() {
   }

   function two() {
     one();
   }

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

在茉莉花规范中,我尝试做这样的事情:

it('should verify', inject(function(Utils) {
  spyOn(Utils, 'one');
  Utils.two();
  expect(Utils.one).toHaveBeenCalled();
}));

但是我收到一条错误消息,说从未调用过间谍。我想这是某种参考问题。知道为什么我不能监视从同一工厂中的另一个函数调用的工厂函数吗?

【问题讨论】:

    标签: javascript angularjs testing jasmine factory


    【解决方案1】:

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

    spyOn(Utils, 'one').and.callThrough();
    

    【讨论】:

      【解决方案2】:

      我可以通过将工厂调整为:

      angular.module('app').factory('Utils', function () {
      var utils = {};
      
      function one() {
      }
      
      function two() {
       utils.one();
      }
      
      utils = {
       one: one,
       two: two
      }
      
      return utils;
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多