【发布时间】:2019-03-13 09:44:34
【问题描述】:
我是单元测试的新手。 我有一个组件调用服务来显示学生列表。
getListStudents() {
this.noteService.getStudents({}).subscribe(res => {
this.students= res
})}
然后我在 ngOnInit() 中调用这个函数
if(this.currentUser.Type == 'Teacher'){
this.getListStudents()
}
如果没有 if 语句,测试是正确的,但如果有 if 语句,它就坏了
这是我的测试
it('should call the service getStudents', () => {
component.currentUser={ "Type": "Teacher"}
let mock = [{
"ID": 22,
"name": "paul"
}]
let service: NoteService = TestBed.get(NoteService);
spyOn(service, 'getListStudents').and.returnValue(of(mock));
fixture.detectChanges();
expect(component.students.length).toBe(1)
});
我收到错误无法读取 null 的属性“类型”,当我从 ngOnInit 中删除 if 语句时,它按预期工作我做错了什么? 请建议我解决此问题的解决方案。谢谢
【问题讨论】:
-
也许你可以在定义 component.currentUser 之后使用
fixture.detectChanges();?我希望它有所帮助。 -
感谢您的回答 =) ,但我仍然得到 component.students.length=0
-
尝试在 beforeEach 语句中定义
component.currentUser={ "Type": "Teacher"}。它对我有用。 -
再次感谢您的回答=)它在fixture.detectChanges()之后坏了;我得到错误 TypeError: Cannot read property 'Type' of null
-
你需要在 constructor() 中初始化 currentUser 属性
标签: angular unit-testing karma-jasmine karma-runner angular7