login() {
const endPoint = environment.myEndPoint;
window.location.href = endPoint + '/myPath/login';
}
我有角的服务文件与上面的代码写在它重定向到登录URL。现在,我已经在spec文件中编写了下面的代码来进行单元测试。
it('should call login method',() => {
service.digitalssologin();
});
该测试用例有时覆盖登录方法并成功执行,而有时它失败并且karma工具断开连接,因此其他测试用例也停止执行。是否有其他的方法来为这个方法编写测试用例?
提前感谢。
您需要模拟window
对象进行单元测试,否则就像您说的,您将面临这个问题。
你需要做这样的项目AppModule
。
然后在你的服务中,在你的构造函数中注入window服务。
constructor(@Inject('Window') window: Window) {}
login() {
const endPoint = environmment.myEndpoint;
this.window.location.href = endpoint + '/myPath/login';
}
// mock the window object
let mockWindow = { location: { href: '' } };
TestBed.configureTestingModule({
...
providers: [
// provide the mock for 'Window' injection token.
{ provide: 'Window', useValue: mockWindow }
]
...
});
一旦模拟了窗口对象,就不应该面对测试随机失败的问题。