我正在尝试创建涵盖所有行(茉莉花/ Karma),但是由于无法读取未定义的属性'搜索'
,我遇到了错误这是我的组件代码。
public search() {
if (this.searchCompany.length) {
let term = this.searchCompany;
this.tempList = this.tempNameList.filter(tag => {
if (tag.companyName.toLowerCase().indexOf(term.toLowerCase()) > -1) {
return tag;
}
});
} else {
this.resetCompanies();
}
}
以下是我尝试过的规范的以下代码
it('should search the data', () => {
component.search;
expect(component.search()).toBeUndefined();
});
请就上述错误为我提供帮助,
答案 0 :(得分:2)
由于您的搜索方法具有if语句-我们可以编写至少两个单元测试。
这是针对没有搜索标签的情况-如果我们有空的resetCompanies
,我们将调用searchCompany
:
it('should resetCompanies if search is empty', () => {
component.searchCompany = '';
spyOn(component, 'resetCompanies').and.callFake(() => null);
component.search();
expect(component.resetCompanies).toHaveBeenCalled();
});
这是一个例子,当我们有搜索标签和搜索作品时,我们希望tempList
数组最终将由一项{ companyName: 'test' }
组成,因为我们的搜索标签test
与过滤器逻辑中的条件:
it('should search company', () => {
component.searchCompany = 'test';
component.tempList = [];
component.tempNameList = [
{ companyName: 'abc' },
{ companyName: 'test' },
{ companyName: 'def' },
];
component.search();
expect(component.tempList).toEqual([{ companyName: 'test' }]);
});