如何对一个以事件为参数的方法进行单元测试[AngularJasmine]。

问题描述 投票:0回答:1

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

<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('...', () => {
    ...
  })
})

你能不能帮我想想办法?我应该测试什么。是否可以测试 ? 请帮助我。

angular karma-jasmine
1个回答
1
投票

你可以随时制作一个新的事件。

const event = new Event('click');

或任何你需要的事件类型。https:/developer.mozilla.orgen-USdocsWebEvents。

传入你的方法中

© www.soinside.com 2019 - 2024. All rights reserved.