Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试以function作为参数的函数?_Javascript_Angularjs_Testing_Jasmine - Fatal编程技术网

Javascript 如何测试以function作为参数的函数?

Javascript 如何测试以function作为参数的函数?,javascript,angularjs,testing,jasmine,Javascript,Angularjs,Testing,Jasmine,我正在努力做到以下几点: 我有一个服务,它有一个名为loadingWrapper的函数,该函数获取一个函数作为参数(该函数返回一个承诺)。 在给定函数之前和之后-我切换加载微调器的打开和关闭。 我的目标是测试这个流程 我当前的代码: 服务: // Wrapping a promise function with loading spinner function loadingWrapper(scope,spinnerName,func) { $timeout(function(){

我正在努力做到以下几点: 我有一个服务,它有一个名为loadingWrapper的函数,该函数获取一个函数作为参数(该函数返回一个承诺)。 在给定函数之前和之后-我切换加载微调器的打开和关闭。 我的目标是测试这个流程

我当前的代码:

服务:

// 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。

它不应该是
func()。然后
?不,使用()根本不起作用。我假设()是一个不返回承诺的新调用。
func.then
没有意义,因为函数没有
then
方法。它必须是
func()。然后是
。我的问题是修辞性的。。当我开发这个时,我花了很长时间才完成。func()不会在“then”中调用函数,而func会在函数运行后调用它。我不知道您的意思。