【问题标题】:Angular service functions can't be accessed in Jasmine TestsJasmine 测试中无法访问 Angular 服务功能
【发布时间】:2016-04-22 22:12:05
【问题描述】:

我对 Jasmine 测试和 Angular 框架还很陌生。我目前遇到一种特殊情况,无法从 Jasmine 测试中引用我的服务功能。

我的 Angular 服务初始化的一部分:

var service = {
checkIfCurrentIsObject: checkIfCurrentIsObject,
removeFromCurrentObject: removeFromCurrentObject;
}

function checkIfCurrentIsObject() {
          return getCurrent().isObject();
       }

function removeFromCurrentIsObject() {
         checkIfCurrentIsObject();
          return specialFunction();
       }

现在在我的业力测试中:

describe('when current object is property', function() {

             it('verify the requote function is called', function() {
             spyOn(Service, 'checkIfCurrentIsObject').and.returnValue(true);
             spyOn(Service, 'removeFromCurrentIsObject').and.callThrough();
             spyOn(Service, 'specialFunction');
             expect(Service, 'specialFunction').toHaveBeenCalled();

                    });

现在我面临的问题是,除非我在 removeFromCurrentIsObject 函数中将其指定为 this.checkIfCurrentIsObject,否则我的 spyOn 不会使用我的 checkIfCurrentIsObject 函数。这有什么特别的原因吗?

【问题讨论】:

    标签: javascript angularjs unit-testing jasmine karma-jasmine


    【解决方案1】:

    是的,应该是

     function removeFromCurrentIsObject() {
         this.checkIfCurrentIsObject();
         return this.specialFunction();
     }
    

    监视他们。

    被监视的是Service.checkIfCurrentIsObject 方法。在 JavaScript 中,无法跟踪 checkIfCurrentIsObject() 本地函数调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      • 2023-03-16
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多