属性 在规范文件中被识别为未定义,即使它存在于组件中。使用 Karma 在 Angular 中进行单元测试 - Jasmine
Property recognized as undefined in spec file even though it exist in the component. Unit Test in Angular with Karma - Jasmine
我在 Angular 的组件中有以下方法,但是当我为它编写单元测试时,它失败了,无法识别组件中实际存在的属性;这是我的方法
makeUrl(): string {
const base: string = this.marketConditionsEnvironment.apiRoot;
const tempEquipment: string = '?equipment=Van';
const origin: string = this.makeLocation('origin', this.marketConditionsData.origin);
const searchCriteria: CreateSearchCriteria = this.dataSource.currentCriteria.createAndExecuteSearchCriteria.searchCriteria;
if (searchCriteria.origin?.point) {
return `${base}${tempEquipment}${origin}`;
}
return `${base}${tempEquipment}`;
}
我为此编写了这个单元测试:
describe('makeUrl', () => {
it('should call initCapital and makeLocation', () => {
spyOn(component, 'initCapital');
spyOn(component, 'makeLocation');
component.makeUrl();
expect(component.initCapital).toHaveBeenCalled();
expect(component.makeLocation).toHaveBeenCalled();
});
});
但是,测试失败并出现以下错误:“类型错误:无法读取未定义的属性(读取 'currentCriteria')”。
无法到达“dataSource”对象。
正在通过输入传递给组件:
@Input() dataSource: LoadsDataSource;
我做错了什么?谢谢。
当你写一个测试时,没有任何东西自己初始化。你的测试看起来很标准,所以问题一定是你没有在测试中初始化数据源属性(它是 Input 是无关紧要的,同样适用于“常规”属性)
我在 Angular 的组件中有以下方法,但是当我为它编写单元测试时,它失败了,无法识别组件中实际存在的属性;这是我的方法
makeUrl(): string {
const base: string = this.marketConditionsEnvironment.apiRoot;
const tempEquipment: string = '?equipment=Van';
const origin: string = this.makeLocation('origin', this.marketConditionsData.origin);
const searchCriteria: CreateSearchCriteria = this.dataSource.currentCriteria.createAndExecuteSearchCriteria.searchCriteria;
if (searchCriteria.origin?.point) {
return `${base}${tempEquipment}${origin}`;
}
return `${base}${tempEquipment}`;
}
我为此编写了这个单元测试:
describe('makeUrl', () => {
it('should call initCapital and makeLocation', () => {
spyOn(component, 'initCapital');
spyOn(component, 'makeLocation');
component.makeUrl();
expect(component.initCapital).toHaveBeenCalled();
expect(component.makeLocation).toHaveBeenCalled();
});
});
但是,测试失败并出现以下错误:“类型错误:无法读取未定义的属性(读取 'currentCriteria')”。
无法到达“dataSource”对象。
正在通过输入传递给组件:
@Input() dataSource: LoadsDataSource;
我做错了什么?谢谢。
当你写一个测试时,没有任何东西自己初始化。你的测试看起来很标准,所以问题一定是你没有在测试中初始化数据源属性(它是 Input 是无关紧要的,同样适用于“常规”属性)