2017-07-03 76 views
3

我试着做一些测试,在中有一个子组件:角2 - 与injectionToken依赖模拟组件

这是父组件的模板:

<header></header> 
<snackbar></snackbar> 

这个小吃吧部件是当我尝试测试父组件时,它会给我带来问题:快餐栏组件与injectToken之间存在依赖关系,用于向组件传递组件需要的appConfig(一些常量)。了AppConfig注入到小吃吧成分是这样的:

import { APP_CONFIG, AppConfig } from '../../../../app.config'; 

export class SnackbarComponent implements OnInit { 

    private config: MdSnackBarConfig; 

    constructor(
    @Inject(APP_CONFIG) config: AppConfig 
) { 
    let snackBarConfig = new MdSnackBarConfig(); 
    this.config = snackBarConfig; 
    } 
} 

父组件测试好,但是当尝试解析小吃吧部件依赖它,因为它无法找到该injectionToken依赖的供应商失败。

我想解决这个问题的一个正确方法是模拟快餐栏组件,sandly我还没有找到任何有效的方法。

任何帮助,将不胜感激。由于

+1

有ÿ你解决了这个问题吗?有同样的问题 – user990993

回答

0

我猜你的app.config看起来像这样在Angular tutorial:

import { InjectionToken } from '@angular/core'; 

export interface IAppConfig { 
    smartTable: { 
    widthColumnNumber: string; 
    widthColumnPercentage: string; 
    }; 
} 

export const APP_DI_CONFIG: IAppConfig = { 
    smartTable: { 
    widthColumnNumber: '5rem', 
    widthColumnPercentage: '10rem', 
    }, 
}; 

export let APP_CONFIG = new InjectionToken<IAppConfig>('app.config'); 

描述是为了增加对这样的供应商,你应该NgModule添加提供程序是这样的:

import { APP_CONFIG, APP_DI_CONFIG } from '../../app.config'; 

... 
... 

{ provide: APP_CONFIG, useValue: APP_DI_CONFIG }, 

而在你的单元测试,你可以以嘲笑的配置做到这一点:

import { APP_CONFIG } from '../../app.config'; 

... 
let mockConfig = {}; 
... 

{ provide: APP_CONFIG, useValue: mockConfig },