Angular hybrid app:如何对我的bootstrap模块进行单元测试?

时间:2018-03-12 09:46:24

标签: angular unit-testing hybrid

我有一个混合的AngularJs / Angular应用程序。应用程序的引导程序在我的AppModule中的Angular应用程序中使用ngDoBootstrap()完成;像这样:

ngDoBootstrap() {
        this.upgrade.bootstrap(document.body, ['my.angularjs.app']);
}

我想对此进行单元测试,以确保完成引导程序。 但我似乎无法在官方文档中找到适当的单元测试模块文档(https://angular.io/guide/testing

PS:上面的代码只是一个小例子。我在构造函数中做了很多事情,我想测试一下。

有人已经这样做了吗?感谢您的帮助

编辑: 这是我到目前为止的测试:

import { TestBed, inject } from '@angular/core/testing';
import {AppModule} from "./app.module";

describe('AppModule', () => {
    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [AppModule]
        });
    });

    it('should call ngDoBootstrap', () => {
        spyOn(AppModule, 'ngDoBootstrap');
        AppModule.ngDoBootstrap();
        expect(AppModule.AppModule).toHaveBeenCalled();
    });
});

当我运行测试时,我遇到了这个错误

error TS2345: Argument of type '"ngDoBootstrap"' is not assignable to parameter of type '"prototype"'.
error TS2339: Property 'ngDoBootstrap' does not exist on type 'typeof AppModule'.
error TS2339: Property 'AppModule' does not exist on type 'typeof AppModule'.

1 个答案:

答案 0 :(得分:0)

在你的测试套件中你尝试过这样的事情:

spyOn(upgrade, 'bootstrap')
component.ngDoBootstrap()
expect(component.upgrade.bootstrap).toHaveBeenCalled()

upgrade是我认为合适的服务吗?