【问题标题】:error TS2304: Cannot find name 'createNewEvent'错误 TS2304:找不到名称“createNewEvent”
【发布时间】:2021-01-12 09:45:52
【问题描述】:

我正在为 Angular 11 中的输入框编写单元测试。

这是我的 spec.ts 代码:

import { ComponentFixture, TestBed } from '@angular/core/testing';
import 'jasmine';
import { ExpectedConditions } from 'protractor';
import { MicroplateComponent } from './microplate.component';

describe('MicroplateComponent', () => {
  let component: MicroplateComponent;
  let fixture: ComponentFixture<MicroplateComponent>;

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      declarations: [MicroplateComponent]
    })
      .compileComponents();
  });

  beforeEach(() => {
    fixture = TestBed.createComponent(MicroplateComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  describe('Evaluation of input box', () => {
    it('Should return true for "1, 2, 3"', () => {
      const input = fixture.nativeElement.querySelector('input');
      const event = createNewEvent('input'); // I get error at this line

      input.value = '1, 2, 3';
      input.dispatchEvent(event);

      fixture.detectChanges();

      expect(component.columns?.valid).toBe(true);
    });
  });
});

我收到以下错误,但我不知道我错在哪里。

error TS2304: Cannot find name 'createNewEvent'.

我在 Angular 网站上使用过这种方法。

【问题讨论】:

  • 缺少导入? createNewEvent 没有在任何地方定义
  • @MikeS.,因为我不知道“createNewEvent”在哪里。
  • 我认为是 component.createNewEvent 什么的……(假设它是你组件中的一个函数)

标签: javascript angular unit-testing jasmine integration-testing


【解决方案1】:

如果您尝试调用输入事件,您就是这样做的:

input.dispatchEvent(new Event('input'));

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 2019-05-06
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多