如何在Angular2 Jasmine测试中对是否加载测试进行单元测试

时间:2016-11-30 05:22:01

标签: angular karma-jasmine

我有一个模块,其中一些服务加载到构造函数

export class AppModule {
    constructor(
                private oauth: OAuthService, //HOW TO TEST THIS WHETHER ITS LOADED OR NOT?
                private translate: TranslateService
    ){

        let browserLang = navigator.language;
        
        if(browserLang.length == 2) {
            browserLang = browserLang == 'en' ? 'en-US' : browserLang;
            browserLang = browserLang == 'de' ? 'de-AT' : browserLang;
        }
        translate.use(browserLang || 'en-US');
    }
}

我如何进行单元测试以检查是否使用Angular2 Jasmine将OAuthService和TranslateService的实例加载到AppModule中?

1 个答案:

答案 0 :(得分:0)

测试NgModule是否提供服务的一种方法是创建一个通过构造函数注入服务的TestComponent,然后使用TestBed.configureTestingModule创建一个导入模块并声明TestComponent的测试模块。如果您的模块在providers下指定了OAuthService,那么您应该在TestComponent中接收该服务。

另外需要注意的是:这不是在angular2中声明和使用模块的推荐方法。通常,您将使用@NgModule装饰器来定义模块导入,导出,提供和声明的内容。有关示例,请查看official docs on NgModule