加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular 2 – 具有injectToken依赖关系的模拟组件

发布时间:2020-12-17 07:16:04 所属栏目:安全 来源:网络整理
导读:我试图在其中包含子组件的组件中进行一些测试: 这是父组件模板: header/headersnackbar/snackbar 当我尝试测试父组件时,这个snackbar组件给我带来了问题:snackbar组件与injectToken有一个依赖关系,用于将组件所需的appConfig(一些常量)传递给组件. appCon
我试图在其中包含子组件的组件中进行一些测试:

这是父组件模板:

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

当我尝试测试父组件时,这个snackbar组件给我带来了问题:snackbar组件与injectToken有一个依赖关系,用于将组件所需的appConfig(一些常量)传递给组件. appConfig注入了snackbar组件,如下所示:

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

父组件测试良好,但是当尝试解决snackbar组件依赖时,它失败,因为它无法找到injectToken依赖项的提供程序.

我想解决这个问题的一个正确的方法是嘲笑零食吧组件,我没有发现任何有效的方法.

任何帮助,将不胜感激.谢谢

解决方法

我想你的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中添加提供程序,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 },

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读