如何测试将函数作为参数的函数?

时间:2016-01-07 09:17:16

标签: javascript angularjs testing jasmine

我正在尝试执行以下操作: 我有一个服务,它有一个名为loadingWrapper的函数,它获取一个函数作为参数(此函数返回一个promise)。 在给定函数之前和之后 - 我打开和关闭加载微调器。 我的目标是测试这个流程。

我目前的代码:

服务:

// Wrapping a promise function with loading spinner
function loadingWrapper(scope,spinnerName,func) {
  $timeout(function(){
    toggleSpinner(scope, spinnerName, true);

    func.then(function (){
      toggleSpinner(scope, spinnerName, false);
    });

  }, 100);
}

茉莉花:

describe('Loading wrapper works',function(){
it('language list', function() {
  httpBackend.when('GET','dictionaries/dict-en.json').respond();
  httpBackend.when('GET','scripts/login/login.tpl.html').respond();

  var func = function()
  {
    var defer = q.defer();
    console.log('BLAH');
    defer.resolve('d');
    return defer.promise;
  }


  spyOn(layoutService, 'toggleSpinner');
  layoutService.loadingWrapper(scope,"main",func);

  timeout.flush();

  timeout.verifyNoPendingTasks();
  // spyOn(this, 'func');
  scope.$apply();
  scope.$digest();
  expect(layoutService.toggleSpinner).toHaveBeenCalled();
  httpBackend.flush();
  });
});

目前我得到的“func.this”不是一个功能(在服务内)

谢谢yall。

0 个答案:

没有答案