带有自定义类型的角度单元测试给出了找不到命名空间

Posted

技术标签:

【中文标题】带有自定义类型的角度单元测试给出了找不到命名空间【英文标题】:Angular unit testing with custom typings gives Cannot find namespace 【发布时间】:2020-07-27 02:07:41 【问题描述】:

我正在为我的 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[];

规格

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();
    );

  );
TypeLite 自动生成的文件 (app/typings/Company.typings.ts) 中的

打字

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

执行单元测试时出错

错误 TS2503:找不到命名空间公司

这只发生在单元测试编译期间。运行应用程序时,我们没有收到此错误。

试过这个Angular2 Cannot find namespace '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】:

查看您的 tsconfig.json 以及它是如何配置的(很可能)以包含 Company.typings.ts。然后以同样的方式查看您的tsconfig.spec.json 以包含Company.typings.ts。我相信你必须玩types数组或typerootsincludes

TypeScript 2: custom typings for untyped npm module

【讨论】:

以上是关于带有自定义类型的角度单元测试给出了找不到命名空间的主要内容,如果未能解决你的问题,请参考以下文章

自定义作曲家命名空间找不到类

C ++在boost python中使用带有命名空间的自定义智能指针

带有自定义命名空间的jQuery应用程序

Powershell 中的自定义 XAML 命名空间

带有或不带有主机应用程序的单元测试自定义 iOS 框架

Angular 2单元测试:自定义管道错误找不到管道