2016-12-28 46 views
0

这是示例代码片段。 我有一个服务MYSERVICE在那里我有myfunction的,当承诺被拒绝我赶上了错误并调用errorPopup服务popUpservice再次调用一个函数ShowApiError。它接受函数userOkayedCallback作为参数使用Jasmine测试在角码中作为参数传递给其他函数的函数

在这个函数中,我已经做了一个URL的指派window.location.href。

我的问题:我如何在茉莉花中测试这个任务?

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

是使用$ http或$ resource的'Myservice.myfunction'吗? – Amygdaloideum

+0

它使用$ http –

回答

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是否是正确的值。

对于下面的代码工作,你需要注入depencendies。

相关问题