2017-07-13 29 views
0

我想寫的退出方法單元測試:如何嘲笑或禁用location.assign而在4角噶比如單元測試移動到指定參數航線

logout(): Observable<boolean> { 
    ... 
    location.assign('/Login'); 
    ... 
    return Observable.of(false); 
} 

當因緣讓行location.assign('/Login');測試結果頁面移開並寫入「未找到」。

我試圖用spyOn:

spyOn(location,'assign').and.callFake(()=> true); 

但得到錯誤:

Error: <spyOn> : assign is not declared writable or has no setter 

如何嘲笑或禁用單元測試運行location.assign方法?

回答

0

我最近碰到這個問題時,從phantomjs切換到無頭鉻。

不要直接使用位置,你應該使用angulars $ window對象。

我不得不嘲笑$窗口對象在我的測試設置像這樣

beforeEach(inject(($window) => { 
    $window = { 
     location: { 
     assign:() => { 
     } 
    } 
    }; 

    spyOn($window.location, 'assign').and.callFake(() => true); 

})); 

我希望有人認爲這樣做雖然

+0

這是AngularJS的一個更好的方式,而不是4角 – ShinDarth