login.component.ts
ngOnInit() {
this.createForm();
// loginStatus = 1 - redirect to search
// else - redirect to login
let loginStatus = localStorage.getItem('smtLogin');
if (loginStatus == '1') {
this.router.navigate(['/search']);
} else {
localStorage.setItem('smtLogin', '0');
}
}
login.component.spec.ts
it('it should navigate to search after user signs in', () => {
expect(localStorage.setItem('smtLogin', '1')).toBe('1'); // set the localstorage smtLogin to '1'
expect(localStorage.getItem('smtLogin')).toBe('1'); //get the loaclstotorage smtLogin value as'1'
expect(routerStub.navigate).toHaveBeenCalledWith(['/search']);
});
错误:
类型'“ 1”'的参数不能分配给'期望类型'的参数。
在声明之前使用块范围变量'expect'。
预期的间谍导航已被[['/ search']]调用,但从未被调用。
[能否请您帮我为该语句写一个测试用例this.router.navigate(['/ search']);在ngOnInit()的if()块内
- 类型'“ 1”'的参数不能分配给类型'期望'的参数:
expect(localStorage.setItem('smtLogin', '1')).toBe('1');
没有按照您的想法做。 localStorage.setItem()
返回void
,该值不可分配为Expected
->字符串类型。无需期待任何事情,只需执行localStorage.setItem('smtLogin', '1')
在声明之前使用块范围的变量'expect'。
预期的间谍导航已被[['/ search']]调用,但它从未被调用过。
在旁注中,在比较值时始终使用===
:
使用loginStatus === '1'
代替loginStatus == '1'