2016-03-10 75 views
0

我正在通过提供商装饰AngularJS $log测试AngularJS提供商

装饰工作很好,但我真的很努力地测试它。

这是一个fiddle有我的提供者和我的测试尝试。

任何帮助如何测试这将不胜感激,我很新的测试。

感谢

回答

0

这里是$ HTTP一个装饰用新abort函数...

function httpAbortDecorator($provide) { 

$provide.decorator('$http', ["$delegate", "$q", function ($delegate, $q) { 

    ... 

    $delegate.abort = function (request) { 
    var cancelerKey, canceler; 
    cancelerKey = $delegate.getCancelerKey(request.method, request.url); 
    canceler = $delegate.cancelerMap[cancelerKey]; 
    if (canceler != null) { 
     if (request.timeout != null && typeof request.timeout !== "number") { 
     canceler.resolve(); 
     delete $delegate.cancelerMap[cancelerKey]; 
     } 
    } 
    }; 

    return $delegate; 
    }]); 
} 

然后一个单元测试...

it('should not abort a request if the request timeout is not set', function() { 
    spyOn(http, 'abort').and.callThrough(); 
    var ABORT_URL = "/api/"; 
    var HTTP_METHOD = "GET"; 
    http.pendingRequests.push({url: ABORT_URL, method: "GET"}); 
    http.addCancelerKey(HTTP_METHOD, ABORT_URL); 
    state.go("login"); 
    expect(http.abort.calls.count()).toBe(1); 
    expect(Object.keys(http.cancelerMap).length).toBe(1); 
}); 

希望这给你一些方向 - 它不是完整的代码。

相关问题