首页 > 解决方案 > 使用 Jest 和 Spectator 全局导入模块

问题描述

在我的 Angular 项目中,我删除了 Karma 以便将 Jest.js 与 Spectator 一起使用。它运行良好,但现在,由于与翻译相关的模块有点冗长,我正在尝试将其全局导入。我在 Spectator 的文档中读到这可以在 test.js 中完成,但除非我弄错了,否则该文件由 Karma 使用,而不是由 Jest.js 使用。所以我想知道是否可以使用 Jest/Spectator 进行全局注入,谢谢!

标签: angulardependency-injectionjestjsangular-spectatorspectator

解决方案


对于那些使用 Jest 的人,全局注入应该设置在setupJest.ts

例子:

import 'jest-preset-angular/setup-jest';

import { defineGlobalsInjections } from '@ngneat/spectator';
import { HttpClient, HttpClientModule } from '@angular/common/http';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';

export function HttpLoaderFactory(http: HttpClient) {
    return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

defineGlobalsInjections({
    imports: [
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: HttpLoaderFactory,
                deps: [HttpClient]
            }
        })
    ]
});


推荐阅读