使用Jest测试包含“ declare var”的组件或服务

时间:2019-12-08 06:58:08

标签: angular testing jestjs config

在测试组件或服务时出现错误

  

ReferenceError:未定义flagPath

flagPath来自资产文件夹中的 config.js 文件。有没有办法将其添加到TestBed

我正在使用笑话,但不确定在哪里添加它。我已经读过在业力中,您可以将其添加到Var文件中...

//imports...
declare var flagPath: string;

@Injectable({
    providedIn: 'root'
})
export class Service {
   constructor(private http: HttpClient) {}
   getMaxContent(): Observable < any > {
       return this.http.get(flagPath);
   }

在我的测试中,所有工作都是在测试真实性,如下所示:

let service: Service;
beforeEach(async(() = > {
    TestBed.configureTestingModule({
        schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
        declarations: [
            OverviewComponent,
        ],
        imports: [],
        providers: [Service, HttpClient],
    }).compileComponents();
}));

beforeEach(() = > {
    fixture = TestBed.createComponent(OverviewComponent);
    service = fixture.debugElement.injector.get(Service);
    component = fixture.componentInstance;
    fixture.detectChanges();
});

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

1 个答案:

答案 0 :(得分:0)

通过使用全局“声明”,显然使这变得复杂,因此我重构了代码并删除了“声明” 相反,我在服务中使用了网址。这就解决了这个问题。