使用 if else 对 MatSelectChange 进行单元测试
Unit testing MatSelectChange with if else
我正在编写单元测试,我有这个简单的方法,它根据 matSelectChange 的值执行某些操作。
我如何测试才能使代码覆盖率达到 100%?
selectionChanged(matSelectChange: MatSelectChange): void {
if (matSelectChange.value === '1') {
this.service.doSomething();
} else if (matSelectChange.value === '2') {
this.service.doSomethingElse();
}
}
我会这样写测试
describe('mat-select behaviour', () => {
it('sould call doSomething if value is "1"', () => {
const service = TestBed.inject(ServiceClass)
spyOn(service, 'doSomething')
const matSelect = fixture.debugElement.query(By.css('mat-select'))
matSelect.triggerEventHandler('selectionChange', {value: '1'});
fixture.detectChanges()
expect(service.doSomething).toHaveBeenCalledWith('1');
});
it('sould call doSomething if value is "2"', () => {
const service = TestBed.inject(ServiceClass)
spyOn(service, 'doSomethingElse')
const matSelect = fixture.debugElement.query(By.css('mat-select'))
matSelect.triggerEventHandler('selectionChange', {value: '2'});
fixture.detectChanges()
expect(service.doSomethingElse).toHaveBeenCalledWith('2');
});
})
在您可以使用服务之前class您必须在测试设置中提供它
providers: [
ServiceClass
]
我正在编写单元测试,我有这个简单的方法,它根据 matSelectChange 的值执行某些操作。 我如何测试才能使代码覆盖率达到 100%?
selectionChanged(matSelectChange: MatSelectChange): void {
if (matSelectChange.value === '1') {
this.service.doSomething();
} else if (matSelectChange.value === '2') {
this.service.doSomethingElse();
}
}
我会这样写测试
describe('mat-select behaviour', () => {
it('sould call doSomething if value is "1"', () => {
const service = TestBed.inject(ServiceClass)
spyOn(service, 'doSomething')
const matSelect = fixture.debugElement.query(By.css('mat-select'))
matSelect.triggerEventHandler('selectionChange', {value: '1'});
fixture.detectChanges()
expect(service.doSomething).toHaveBeenCalledWith('1');
});
it('sould call doSomething if value is "2"', () => {
const service = TestBed.inject(ServiceClass)
spyOn(service, 'doSomethingElse')
const matSelect = fixture.debugElement.query(By.css('mat-select'))
matSelect.triggerEventHandler('selectionChange', {value: '2'});
fixture.detectChanges()
expect(service.doSomethingElse).toHaveBeenCalledWith('2');
});
})
在您可以使用服务之前class您必须在测试设置中提供它
providers: [
ServiceClass
]