2017-07-13 27 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