2016-02-29 221 views
0
.factory('Tag', function($window) { 

    var Context = {}; 

    function reset() { 
    return Context !== {} ? Context : {}; 
    } 

    return{ 
    reset:reset 
    }; 
}) 

我做了測試這樣在工廠測試功能

describe('method: reset()', function(){ 
    it('should reset the Context variable', function(){ 
    spyOn(Tag, 'reset').andCallFake(function(){ 
     return Context; 
    }); 

    expect(Context).toEqual({}); 
    }); 

    afterEach(function(){ 
    if(Context!== {}){ 
     Context = {}; 
    } 
    }) 
}); 

是,這個測試是準確的,如果是的話,爲什麼我的測試覆蓋率不增加..

回答

0

您所呼叫假功能不是真正的功能,所以實際功能中的代碼永遠不會執行。

您的代碼覆蓋率工具只會標記實際命中的代碼。

andCallFake用於模擬一個你不感興趣測試的外部函數,當你正在測試的代碼調用它時,你只需要一些模擬響應。

你的代碼應該做出真正的電話...

Tag.reset() 

現在如果Tag.reset()使到另一個服務代碼的調用,您不希望測試,那麼你可以上使用callFake那個電話。 請記住這是「單元」測試。您想要測試的代碼的「單元」是您服務中的代碼,而不是服務之外的代碼。