【问题标题】:How to unit test whether a test is loaded or not in Angular2 Jasmine test如何在Angular2 Jasmine测试中对测试是否加载进行单元测试
【发布时间】:2017-04-14 08:01:56
【问题描述】:

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

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');
    }
}

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

【问题讨论】:

  • 您现在有什么测试设置?到目前为止,您尝试过什么?

标签: angular karma-jasmine


【解决方案1】:

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

另外需要注意的是:这不是在 angular2 中声明和使用模块的推荐方式。通常你会使用 @NgModule 装饰器来定义你的模块导入、导出、提供和声明的内容。查看official docs on NgModule 获取一些示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    相关资源
    最近更新 更多