Angular 7 中 subscribe 方法中的代码覆盖行
Code coverage lines inside subscribe method in Angular 7
我有以下代码,无法使用 Istanbul 测试红色行:
测试如下,没有检测到错误:
it('should set user info JSON to local storage after successful authentication', async(() => {
component.loginForm.get('username').setValue('test');
component.loginForm.get('passwd').setValue('test');
spyOn(loginService, 'postLogin').and.returnValues(of({}));
component.sendLoginForm();
expect(component.loginFormSuccess).toEqual(true);
expect(component.loginFormFail).toEqual(false);
component.loggedInUserJSON = '{"login":"test","password":"test"}';
localStorage.setItem('loggedInUserJSON', component.loggedInUserJSON);
fakeLocalStorage.setItem('loggedInUserJSON', component.loggedInUserJSON);
expect(localStorage.getItem('loggedInUserJSON')).toBe(component.loggedInUserJSON);
expect(fakeLocalStorage.getItem('loggedInUserJSON')).toBe(component.loggedInUserJSON);
expect(component.loggedInUserJSON).toBe('{"login":"test","password":"test"}');
expect(component.postLoginObservable).toBeTruthy();
}));
当您监视该服务时,return 订阅中的以下内容正在寻找它:
spyOn(loginService, 'postLogin').and.returnValues(of({
result : {
httpStatus : 200
}
}));
因此,当它执行测试时,它会查找条件 (response.result.httpStatus === 200)
,其计算结果为 true
同样,在另一个测试中,将httpStatus添加为400,以便执行另一个
条件并监视方法 showInvalidAuthentication
并期望它被调用。
查看路由部分,
let routerStub = { navigate: jasmine.createSpy('navigate') };
并在供应商中添加:
providers: [{ provide: Router, useValue: routerStub }]
在测试中,当httpStatus
为200
时,期待下面的
expect(routerStub.navigate).toHaveBeenCalledWith(['/home']);
根据以上内容,您的测试将涵盖行 110 & 113
我有以下代码,无法使用 Istanbul 测试红色行:
测试如下,没有检测到错误:
it('should set user info JSON to local storage after successful authentication', async(() => {
component.loginForm.get('username').setValue('test');
component.loginForm.get('passwd').setValue('test');
spyOn(loginService, 'postLogin').and.returnValues(of({}));
component.sendLoginForm();
expect(component.loginFormSuccess).toEqual(true);
expect(component.loginFormFail).toEqual(false);
component.loggedInUserJSON = '{"login":"test","password":"test"}';
localStorage.setItem('loggedInUserJSON', component.loggedInUserJSON);
fakeLocalStorage.setItem('loggedInUserJSON', component.loggedInUserJSON);
expect(localStorage.getItem('loggedInUserJSON')).toBe(component.loggedInUserJSON);
expect(fakeLocalStorage.getItem('loggedInUserJSON')).toBe(component.loggedInUserJSON);
expect(component.loggedInUserJSON).toBe('{"login":"test","password":"test"}');
expect(component.postLoginObservable).toBeTruthy();
}));
当您监视该服务时,return 订阅中的以下内容正在寻找它:
spyOn(loginService, 'postLogin').and.returnValues(of({
result : {
httpStatus : 200
}
}));
因此,当它执行测试时,它会查找条件 (response.result.httpStatus === 200)
,其计算结果为 true
同样,在另一个测试中,将httpStatus添加为400,以便执行另一个
条件并监视方法 showInvalidAuthentication
并期望它被调用。
查看路由部分,
let routerStub = { navigate: jasmine.createSpy('navigate') };
并在供应商中添加:
providers: [{ provide: Router, useValue: routerStub }]
在测试中,当httpStatus
为200
时,期待下面的
expect(routerStub.navigate).toHaveBeenCalledWith(['/home']);
根据以上内容,您的测试将涵盖行 110 & 113