Как правильно указать при тестировании компонента в Angular тот компонент, который имеет входные данные в типе generi c - PullRequest
0 голосов
/ 09 июля 2020

Я хочу протестировать компонент, который может принимать массив с разными типами данных, на наличие, но Typescript показывает мне ошибку:

Error:(7, 18) TS2314: Generic type 'AppTableComponent<T>' requires 1 type argument(s).

Мой файл компонента:

export class AppTableComponent<T> {
  @Input() data: T[];

  constructor() {}
}

Тестовый файл

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

  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [
        AppTableComponent,
        MockComponent( PreloaderComponent ),
      ],
    }).compileComponents();

    fixture = TestBed.createComponent(AppTableComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

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

Как устранить эту ошибку?

1 Ответ

1 голос
/ 09 июля 2020

Вам необходимо указать аргумент типа, как указывает ошибка.

Поскольку фактический аргумент типа не имеет смысла в тестовом примере, который вы указали выше, я бы рекомендовал использовать unknown для максимальной безопасности .

let component: AppTableComponent<unknown>;

Если тест включает присвоение входу, вам нужно будет явно указать аргумент типа при вызове TestBed.createComponent, например,

 TestBed.createComponent<AppTableComponent<string>>(AppTableComponent);
...