gpt4 book ai didi

angular - 使用 spyon 时的代码覆盖率问题

转载 作者:太空狗 更新时间:2023-10-29 17:18:16 31 4
gpt4 key购买 nike

我正在使用 Karma-Jasmine 为我的组件(Angular2 应用程序)编写单元测试。我正在使用 Istanbul 进行代码覆盖率报告。

这是我的测试用例,

it('Should Invoke onNext function', async(() => {
const fixture = TestBed.createComponent(LoginComponent);
fixture.detectChanges();
const login = fixture.componentInstance;

spyOn(login, 'onNext');

let email = fixture.debugElement.nativeElement.querySelector("input[name='username']");
email.value = "email";

let nextButton = fixture.debugElement.nativeElement.querySelectorAll("button")[1];
nextButton.click();

fixture.whenStable().then(() => {
expect(login.onNext).toHaveBeenCalled();
})
}));

如您所见,我正在监视 onNext 函数 以验证它是否在 nextbutton click 时被调用。它工作正常,测试通过。

但是我的登录页面的代码覆盖率报告显示没有覆盖 onNext 函数。 enter image description here

我做错了什么??

而且如果我不监视 onNext 函数,该函数也会被覆盖,

it('Should Invoke onNext function', async(() => {
const fixture = TestBed.createComponent(LoginComponent);
fixture.detectChanges();
const login = fixture.componentInstance;


let email = fixture.debugElement.nativeElement.querySelector("input[name='username']");
email.value = "email";

let nextButton = fixture.debugElement.nativeElement.querySelectorAll("button")[1];
nextButton.click();
}));

enter image description here

最佳答案

使用这个:

spyOn(login, 'onNext').and.callThrough()

关于angular - 使用 spyon 时的代码覆盖率问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44899564/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com