首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Karma-Jasmine初始化Angular应用程序

用Karma-Jasmine初始化Angular应用程序
EN

Stack Overflow用户
提问于 2018-12-15 13:14:48
回答 1查看 840关注 0票数 1

我们有一个使用SystemJS的遗留Angular 4项目。我们被要求使用Jasmine和Karma实现单元测试用例。我开始为一个组件编写测试套件。它看起来像这样(下面的伪代码):

代码语言:javascript
复制
beforeEach(async(() => {
     TestBed.configureTestingModule(
                imports,
                providers,
                declarations etc.
            ).compileComponents();
}));

我们在APP_INITIALIZER中有很多初始化代码,用于在应用程序中设置各种状态(例如参考数据、配置、用户信息)。为了让测试用例顺利运行,我们需要运行初始化代码。你知道如何实现这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-02 01:01:55

如果您正在尝试实际运行您的应用程序初始化器,请修改测试的beforeEach方法以设置测试床,使其类似于您的NgModule:

代码语言:javascript
复制
TestBed.configureTestingModule({
    declarations: [],
    providers: [
        {
            provide: APP_INITIALIZER,
            useFactory: <factory function here>,
            multi: true,
            deps: [
                <any dependencies of your initializer here>
            ]
        }
    ],
    imports: [
        <if you use HTTP, add 'HttpClientMOdule' here>
    ]
});

请注意,许多人会建议使用模拟或间谍,而不是您在生产中使用的实际工厂。这取决于您的选择,取决于您的特定需求。

在调用configureTestingModule之后,您还需要执行此操作(请参见https://github.com/angular/angular/issues/24218)并将beforeEach标记为async

代码语言:javascript
复制
await TestBed.inject(ApplicationInitStatus).donePromise;

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53789741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档