在Angular中进行按钮点击时,输出发射器的dispatchEvent返回null的解决方法如下:
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'app-button',
template: '',
})
export class ButtonComponent {
@Output() buttonClicked = new EventEmitter();
onClick() {
this.buttonClicked.emit();
}
}
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ButtonComponent } from './button.component';
describe('ButtonComponent', () => {
let component: ButtonComponent;
let fixture: ComponentFixture;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ButtonComponent],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(ButtonComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should emit buttonClicked event on button click', () => {
spyOn(component.buttonClicked, 'emit');
const button = fixture.nativeElement.querySelector('button');
button.click();
expect(component.buttonClicked.emit).toHaveBeenCalled();
});
});
这样,当按钮被点击时,发射器的dispatchEvent方法就会被调用,并且在测试中可以验证该方法是否被调用。