2017-10-05 93 views
0

如果我有一个从范围中取一个函数并且该函数是异步的指令,我该如何测试?例如测试不在服务范围内的异步功能

angular.module('myApp').factory('AsyncService',() => { 
    return { 
     async: // function that returns a promise 
    } 
}) 

angular.module('myApp').directive('asyncDirective',() => ({ 
    scope: { async: = }, 
    link: scope => { 
     scope.async.then(//do something) 
    } 
})); 

angular.module('myApp').controller('ctrl', ($scope, AsyncService) => { 
    $scope.asyncService = AysncService; 
}); 

<async-directive async="asyncService.async" /> 

上面的代码的指令是如何使用的例子,但我只想单独测试指令。由于指令需要一个函数,而不是一个可以用来调用函数的对象,我将如何测试它?如果我使用了间谍,我会监视什么?

回答

1

服务应存根:

beforeEach(() => { 
    module('myApp', { AsyncService: { async: jasmine.createSpy() } }); 
}) 

然后,该方法可以嘲笑返回指令编译之前承诺:

AsyncService.async.and.returnValue($q.resolve(...));