angular 对具有 cont 和 for 循环的方法进行单元测试
angular unit testing a method having a cont and a for loop
我正在 Angular 使用 jasmine 进行单元测试。我有一个包含 const
和 for
循环的方法。下面是代码:
private initializeFilterArrays() {
const today = new Date().getFullYear();
for (let i = 0; i < 5; i++) {
this.yearsFilter.push(today - i);
}
}
这个html为:
<button (click)="initializeFilterArrays()" id="init">Filter</button>
spec.ts:
it('clicking on "Filter" should filter', () => {
const filterBtn = debugElement.query(By.css('#init'));
filterBtn.triggerEventHandler('click', {});
...
}
那么,在测试用例中,触发点击后,我应该写些什么,以便执行该方法的所有行?我想测试是否所有的行都被执行了。以及如何让所有的行都执行?如果我想要总代码覆盖率怎么办?
您可以断言 yearsFilter
实例变量具有正确的长度。
it('clicking on "Filter" should filter', () => {
const filterBtn = debugElement.query(By.css('#init'));
filterBtn.triggerEventHandler('click', {});
expect(component.yearsFilter.length).toBe(/* new length you expect with all the pushes */);
// you can also do other assertions on the yearsFilter array as well.
// Edit
expect(component.yearsFilter.includes(2021)).toBeTruthy();
}
我正在 Angular 使用 jasmine 进行单元测试。我有一个包含 const
和 for
循环的方法。下面是代码:
private initializeFilterArrays() {
const today = new Date().getFullYear();
for (let i = 0; i < 5; i++) {
this.yearsFilter.push(today - i);
}
}
这个html为:
<button (click)="initializeFilterArrays()" id="init">Filter</button>
spec.ts:
it('clicking on "Filter" should filter', () => {
const filterBtn = debugElement.query(By.css('#init'));
filterBtn.triggerEventHandler('click', {});
...
}
那么,在测试用例中,触发点击后,我应该写些什么,以便执行该方法的所有行?我想测试是否所有的行都被执行了。以及如何让所有的行都执行?如果我想要总代码覆盖率怎么办?
您可以断言 yearsFilter
实例变量具有正确的长度。
it('clicking on "Filter" should filter', () => {
const filterBtn = debugElement.query(By.css('#init'));
filterBtn.triggerEventHandler('click', {});
expect(component.yearsFilter.length).toBe(/* new length you expect with all the pushes */);
// you can also do other assertions on the yearsFilter array as well.
// Edit
expect(component.yearsFilter.includes(2021)).toBeTruthy();
}