【问题标题】:Increase the coverage summary for function in jasmine增加 jasmine 函数的覆盖率汇总
【发布时间】:2021-02-22 05:37:22
【问题描述】:

我在应用程序组件中编写了一些函数。面临增加组件方法的覆盖率摘要的问题。

测试用例运行良好,只是覆盖率摘要中没有跟踪几行。

app.component.ts

public initializeA(): void {
    this.flagClone.client = {
        build: null, //string
        name: null, //string
        id: null    //string
    }
}

public initializeB(): FlagResult {
    this.isSearch = false;
    return {
        id: null, //string
        description: null,  //string
        url: null,      //string
        client:{
            build: null, //string
            name: null, //string
            id: null    //string
        }
    };
}

app.component.spec.ts各自的测试用例

const testFlagResult: FlagResult = {
    id: null, //string
    description: null,  //string
    url: null,      //string
    client:{
        build: null, //string
        name: null, //string
        id: null    //string
    }
};
it('should initializeA',() => {
    const mock = spyOn(component,'initializeA').and.returnValue();
    component.initializeA();
    fixture.detectChanges();
    expect(mock).toHaveBeenCalled();
});

it('should initializeB',() => {
    const mock = spyOn(component,'initializeB').and.returnValue(testFlagResult);
    component.initializeB();
    fixture.detectChanges();
    expect(component.isSearch).toBeTruthy();
    expect(mock).toHaveBeenCalled();
});

预计以下区块将包含在覆盖范围摘要中:

public initializeA(): void {
    this.flagClone.client = {

public initializeB(): FlagResult {
    this.isSearch = false;

需要一些我错过的输入。

【问题讨论】:

    标签: angular typescript jasmine karma-jasmine


    【解决方案1】:

    当您添加间谍时,您不会检查被监视的代码。所以通过拥有 const mock = spyOn(component,'initializeA').and.returnValue(); 您正在避免测试 initializeA 并且拥有 const mock = spyOn(component,'initializeB').and.returnValue(testFlagResult); 您实际上并没有测试 initializeB

    更好的实现是

    it('should initializeA',() => {
        component.initializeA();
        fixture.detectChanges();
        expect(component.flagClone.client).toEqual({
            build: null,
            name: null, 
            id: null    
        });
    });
    
    it('should initializeB',() => {
        const expectedResult = {
            id: null, //string
            description: null,  //string
            url: null,      //string
            client:{
                build: null, //string
                name: null, //string
                id: null    //string
            }
        }
    
        const res = component.initializeB();
        fixture.detectChanges();
        expect(component.isSearch).toBeTruthy();
        expect(res).toEqual(expectedResult);
    });
    

    这样你实际上是在测试你的方法是否按预期工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-18
      • 2013-04-16
      • 2011-01-14
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      相关资源
      最近更新 更多