如何对将事件作为参数 [Angular/Jasmine] 的方法进行单元测试

How to unit test a method that takes event as parameter [Angular/Jasmine]

我是 Angular 中使用 Jasmine 和 Karma 进行单元测试的初学者。我的模板是:

<p-overlayPanel #op>
  <div>
    ...  
  </div>
</p-overlayPanel>

<button (click)="closeTimeselector($event, op)">
  Close
</button>

注:p-overlayPanelprimeng的组成部分。

这是我的逻辑:

closeTimeselector(event, element) {
    element.hide(event);
}

我要检查何时从模板中按下 Close 按钮,上面的方法应该被调用并且它应该按预期工作。

这是我的规范文件:

import { TestBed, async, ComponentFixture } from '@angular/core/testing';
import { ...} from './timeselector.component';
...

fdescribe('Timeselector', () => {
   ...
  let fixture: ComponentFixture<TimeselectorComponent>;
  let component: TimeselectorComponent;
  let mockTranslateService;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
        imports: [
            ...
        ],
        declarations: [TimeselectorComponent],
        providers: [

        ],
        schemas: [CUSTOM_ELEMENTS_SCHEMA]
    }).compileComponents();
  }));


  beforeEach(() => {
    ...
    fixture=TestBed.createComponent(TimeselectorComponent);
    component=fixture.componentInstance;
    timeselector=new TimeselectorComponent(mockTranslateService);
  })

  it('should create', () => {
    expect(component).toBeTruthy();
  });

  it('...', () => {
    ...
  })
})

你能帮我解决这个问题吗?我应该测试什么。它甚至可以测试吗?请帮助我。

您随时可以创建新活动:

const event = new Event('click');

或您需要的任何类型的活动:https://developer.mozilla.org/en-US/docs/Web/Events

传递给你的方法