这是示例代码段。 我有一个服务 Myservice ,我有 myfunction ,当承诺被拒绝时我抓住错误并调用errorPopup,再次调用函数 ShowApiError 服务 popUpservice 。它接受函数 userOkayedCallback 作为参数
在这个函数中,我已经完成了对window.location.href的URL分配。
我的问题:如何在茉莉花中对此作业进行单元测试?
function somefunction(){
Myservice.myfunction(vm.arg).then(function(){
//some code here
},
function (error) {
errorPopup(error);
});
}
function errorPopup(){
popupService.showApiError(userOkayedCallback, error.status);
}
function userOkayedCallback(){
$window.location.href = vm.url
}}
答案 0 :(得分:1)
describe('spec', function() {
beforeEach(function(){
angular.mock.module(function ($provide) {
$provide.value('popupService', {
'showApiError': userOkayedCallback => userOkayedCallback()
});
$provide.value('$window', {
location: {href: ''}
});
});
});
it('should relocate the user', function() {
$httpBackend.expect('GET', 'url/to/service').respond(500, []);
Myservice.myfunction();
$httpBackend.flush();
expect($window.location.href).toBe('something');
});
});
这不是一个有效的例子,但你明白了。模拟popupservice和一个只执行回调的函数,然后使用$ httpBackend失败服务调用并检查window.href是否是正确的值。
要使下面的代码工作,你需要注入依赖性。