如果我有一个从作用域中获取函数的指令,并且该函数是异步的,我该怎么测试呢?例如
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" />
上面的代码是如何使用该指令的一个例子,但我只想单独测试该指令。由于该指令需要一个函数而不是它可以用来调用函数的对象,我该如何测试它?如果我使用间谍,我会窥探什么?
答案 0 :(得分:1)
该服务应该是存根的:
beforeEach(() => {
module('myApp', { AsyncService: { async: jasmine.createSpy() } });
})
然后可以模拟该方法在指令编译之前返回一个promise:
AsyncService.async.and.returnValue($q.resolve(...));