请问是否我有一个单击时会发出事件的组件,即
@Component({
selector: 'component-checkout-payment',
template: `<button (click)="click()>Click me</button>`
})
export class TestComponent{
@Output() clicked = new EventEmitter<boolean>();
click() {
this.clicked.emit(true);
}
}
然后我将像下面分别测试事件和组件方法吗?
it('should emit an event when `click` is called`, () => {
jest.spyOn(component.clicked, 'emit');
component.click();
expect(component.clicked.emit).toHaveBeenCalledWith(true);
});
it('should call `click` when button has been clicked`, () => {
jest.spyOn(component, 'click');
let button = fixture.debugElement.nativeElement.querySelector('button');
button.click();
expect(component.click).toHaveBeenCalled();
})
还是我要测试一下单击按钮后是否发出事件?
it('should emit event when button has been clicked`, () => {
jest.spyOn(component.clicked, 'emit');
let button = fixture.debugElement.nativeElement.querySelector('button');
button.click();
expect(component.clicked.emit).toHaveBeenCalledWith(true)
})
我假设是后者,因为它将前两个测试都合而为一。但是,我想澄清一下。
我还想知道这类测试是单元测试,集成测试还是e2e测试。
答案 0 :(得分:2)
这两种方法都是有效的,这完全取决于您的偏好。
这些是单元测试。它们防止了应用程序中的副作用:如果测试失败,则表明您的功能已被修改。
这不是集成测试,因为您只测试单个组件,也不是端到端测试,因为您没有完全通过后端。