【问题标题】:How to verify ngCopy method call in angular 6 unit test如何在 Angular 6 单元测试中验证 ngCopy 方法调用
【发布时间】:2019-02-06 05:10:04
【问题描述】:

我正在使用 ngCopy 模块将文本复制到我的一个角组件中的剪贴板

import {Component, Input, OnInit} from '@angular/core';
import {ngCopy} from 'angular-6-clipboard';

@Component({
  selector: 'app-error-message',
  templateUrl: './error-message.component.html',
  styleUrls: ['./error-message.component.scss']
})
export class ErrorMessageComponent implements OnInit {
  constructor() {
  }

  ngOnInit() {
  }

  copyMessage() {
    ngCopy('message');
  }

}

下面是这个组件的规范文件

import {async, ComponentFixture, TestBed} from '@angular/core/testing';

import {ErrorMessageComponent} from './error-message.component';

describe('ErrorMessageComponent', () => {
  let component: ErrorMessageComponent;
  let fixture: ComponentFixture<ErrorMessageComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ErrorMessageComponent]
    })
      .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(ErrorMessageComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create component', () => {
    expect(component).toBeTruthy();
  });

  it('should verify ngCopy', () => {
    const errorMessageComponent = TestBed.createComponent(ErrorMessageComponent).debugElement.componentInstance;
    errorMessageComponent.copyMessage();
    //Verify ngCopy Method call
  });

});

我目前正在使用 ts-mockito 框架,但不知道如何模拟 ngCopy 模块

如何在单元测试中以“消息”作为参数验证 ngCopy 方法调用?

【问题讨论】:

  • 您的规范文件在哪里?到目前为止,您尝试过什么?
  • 嗨@AmitChigadani。更新了包含规范细节的问题
  • 你能给'angular-6-clipboard'的出处参考吗?因为我完全不明白语法。没有实例可以调用ngCopy 方法。
  • 我已经搜索过了。但是网上找不到。链接到 npm 包npmjs.com/package/angular-6-clipboard

标签: angular karma-jasmine angular6 angular-unit-test


【解决方案1】:

好的,您可以使用spyOn 完成此操作

spec.ts 文件

import * as ngClipBoard from 'angular-6-clipboard';    // get alias to your library

................

it('should verify ngCopy', () => {
    const errorMessageComponent = TestBed.createComponent(ErrorMessageComponent).debugElement.componentInstance;

    let spy = spyOn(ngClipBoard,'ngCopy');    // create spy here

    errorMessageComponent.copyMessage();    // invoke method

    //Verify ngCopy Method call along with its parameter value
    expect(spy).toHaveBeenCalledWith('message');
});

【讨论】:

  • 谢谢 :) 成功了!!我们不能使用模拟而不是间谍来做到这一点吗?
  • 你可以,但你不需要。它既不会修改您的数据,也不会进行任何 http 调用。
  • 如果您仍然希望调用该方法,那么您可以执行spyOn(ngClipBoard, 'ngCopy').and.callThrough()
  • 好的..明白了!!非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多