Angular модульное тестирование с пользовательскими типами дает не удается найти пространство имен - PullRequest
1 голос
/ 14 апреля 2020

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

Я не уверен, как вывести это пространство имен при выполнении юнит-тестов. Ниже приведен код, который у нас есть

Компонент

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html'
})
export class AppComponent {
  title = 'app';
  public employees: Company.Core.DTO.IEmployee[];
}

SPE C

import { NO_ERRORS_SCHEMA } from "@angular/core";
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AppComponent } from './app.component';

describe('SearchComponent',
  () => {

    let fixture: ComponentFixture<AppComponent>;
    let component: AppComponent; 

    beforeEach(async(() => {
     TestBed.configureTestingModule({
       declarations: [AppComponent],
       schemas: [NO_ERRORS_SCHEMA],
       })
       .compileComponents();
    }));

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

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

  });

Набрав в файле (app / typings / Company.typings.ts), автоматически сгенерирован TypeLite

declare module Company.Core.DTO {
  interface IEmployee {
    Number: number;
    Age: number;    
    Name: string;   
  }
}

Ошибка при выполнении модульного теста

Ошибка TS2503: Не удается найти пространство имен. Company

Это происходит только во время компиляции модульного тестирования. При запуске приложения мы не получаем эту ошибку.

Пробовал это Angular2 Не удается найти пространство имен 'google' , но не повезло

NPM пакетов

Angular : 8.2.12
jasmine-core : ~3.5.0
karma: ^4.4.1
karma-jasmine : ~2.0.1
typescript: 3.5.3

1 Ответ

0 голосов
/ 14 апреля 2020

Посмотрите на ваш tsconfig.json и как он настроен (скорее всего) для включения Company.typings.ts. Затем посмотрите на ваш tsconfig.spec.json, чтобы включить Company.typings.ts таким же образом. Я считаю, что вы должны поиграться с массивом types или typeroots или includes.

TypeScript 2: пользовательские наборы для нетипизированного npm модуля

...