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”类型的参数不能分配给“ Expected”类型的参数。
在声明之前使用的块范围变量'expect'。
预期的间谍导航已被[['/ search']]调用,但从未被调用。
您能否帮我为此语句写一个测试用例 this.router.navigate(['/ search']); 在ngOnInit()的if()块内
答案 0 :(得分:0)
- “ 1”类型的参数无法分配给“期望”类型的参数:
expect(localStorage.setItem('smtLogin', '1')).toBe('1');
没有按照您的想法做。 localStorage.setItem()
返回void
,该值不可分配为类型Expected
->字符串。无需期待任何事情,只需localStorage.setItem('smtLogin', '1')
在声明之前使用块范围变量'expect'。
预期的间谍导航已被[['/ search']]调用,但是 从来没有叫过。
在旁注中,比较值时始终使用===
:
使用loginStatus === '1'
代替loginStatus == '1'