【问题标题】:Why I cant call a component's function in .spec.ts?为什么我不能在 .spec.ts 中调用组件的函数?
【发布时间】:2021-10-15 09:24:32
【问题描述】:

我正在尝试对调用另一个函数的函数进行单元测试。这是被调用的函数

detailsFiltersClosed(recentSearch: boolean): void {
        this.arrowUp = false;
        this.filterData = this.loadsFilter.getData();
        const isTypeAll: boolean = this.filterData.loadType === Capacity.Both;
        const loadType: string = isTypeAll ? DetailsFiltersResources.All : this.filterData.loadType;

    }

这是调用它的函数:

searchAndCloseDetails(){
    this.detailsFiltersClosed(false);
    setTimeout(() => {
        this.trigger.closeMenu();
    },0);    
}

变量arrowUp 是组件的布尔属性。

我写了这个单元测试:

describe('searchAndCloseDetails', () => {
   let arrow = component.arrowUp = true;
   component.searchAndCloseDetails();
   expect(component.arrowUp).toEqual(false);
});

但是它失败了:TypeError: "Cannot read property 'loadType' of undefined"

你能帮我找出我的错误在哪里吗?

谢谢。

【问题讨论】:

  • 过滤数据好像是未定义的。 this.loadsFilter.getData(); 方法有问题吗? this.loadsFilter 是否被注入到组件构造函数中?

标签: angular jasmine karma-jasmine angular-unit-test


【解决方案1】:

可能是因为 this.filterData 未定义。

const loadType: string = isTypeAll ? DetailsFiltersResources.All : this.filterData.loadType;

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 2018-05-20
    • 2019-03-02
    • 1970-01-01
    相关资源
    最近更新 更多