在角度指令单元测试中注入服务

Posted

技术标签:

【中文标题】在角度指令单元测试中注入服务【英文标题】:Injecting service in angular directive unit test 【发布时间】:2019-03-28 16:00:00 【问题描述】:

我正在尝试首先修复 cli 为我编写的基本单元测试。我是单元测试新手,所以这里是代码

import  MyDirective  from './my.directive';

describe('MyDirective', () => 
  it('should create an instance', () => 
    const directive = new MyDirective(); // it throws error here
    expect(directive).toBeTruthy();
  );
);

我需要在 MyDirective 中注入 ElementRef

【问题讨论】:

也许你应该先阅读official documentation,它回答了这个案例。 【参考方案1】:

我在解决问题的过程中浪费了几个小时。这里是答案。比如我们需要注入 ElementRef 和 NgControl:

import  inject  from '@angular/core/testing';
import  ElementRef  from '@angular/core';
import  NgControl  from '@angular/forms'
import  MyDirective  from './my.directive';

describe('MyDirective', () => 
  it('should create an instance', inject([ElementRef, NgControl], (elementRef: ElementRef, ngControl: NgControl) => 
      const directive = new MyDirective(elementRef, ngControl);

      expect(directive).toBeTruthy();
    ));
  );
);

【讨论】:

以上是关于在角度指令单元测试中注入服务的主要内容,如果未能解决你的问题,请参考以下文章

在角度形式指令的单元测试中设置视图值输入字段

具有 @input 属性的单元测试角度 4 指令

在 Grails 单元测试中注入服务

单元测试 typescript 指令模板 karma-jasmine,html 未定义

在AngularJS单元测试中模拟模块依赖性

如何订阅角度服务单元测试中的错误案例