Nik*_*chi 5 unit-testing jasmine karma-jasmine angular
login() {
const endPoint = environment.myEndPoint;
window.location.href = endPoint + '/myPath/login';
}
Run Code Online (Sandbox Code Playgroud)
我有角度服务文件,其中写入了上述代码以重定向到登录 URL。现在,我已在规范文件中编写了以下代码来对其进行单元测试。
it('should call login method',() => {
service.digitalssologin();
});
Run Code Online (Sandbox Code Playgroud)
该测试用例有时覆盖登录方法并成功执行,但有时失败并且karma工具断开连接,因此其他测试用例也停止执行。还有其他方法可以为此方法编写测试用例吗?
提前致谢。
您需要模拟window对象进行单元测试,否则就像您所说的,您将面临这个问题。
您需要为 中的项目执行类似AppModule的操作。
然后在您的服务中,将窗口服务注入构造函数中。
constructor(@Inject('Window') window: Window) {}
login() {
const endPoint = environmment.myEndpoint;
this.window.location.href = endpoint + '/myPath/login';
}
Run Code Online (Sandbox Code Playgroud)
// mock the window object
let mockWindow = { location: { href: '' } };
TestBed.configureTestingModule({
...
providers: [
// provide the mock for 'Window' injection token.
{ provide: 'Window', useValue: mockWindow }
]
...
});
Run Code Online (Sandbox Code Playgroud)
一旦您模拟了窗口对象,您就不应该面临测试随机失败的问题。