来自node_modules的角单元测试spyOn类

时间:2020-08-27 17:41:34

标签: node.js angular jasmine karma-jasmine

我正在尝试创建一个间谍,以确保从node_modules类调用了该函数 例如在obs.d.ts中:


export declare module Obs {
   
    class MyService {
    
         
        func(params: Object): Promise<void>;

所以我想监视func()

我正在测试中,我正在尝试:

import { Obs } from 'obs';


describe('CurrentService', () => {

 let test: Obs.MyService;

let spy;

 beforeEach(() => {

//test.func();  //this works

spy = spyOn(test, 'func');   // spy does not

    TestBed.configureTestingModule({});
    service = TestBed.get(CurrentService);

    expect(spy).toHaveBeenCalled();

应该在CurrentService的构造函数中调用func方法。

得到错误:“错误::找不到要监视的func()对象”

即使test.func()有效,问题也无法识别间谍中的func方法(请参见代码的注释部分)。

不确定这是否是导入问题。我相信,如果您实际创建类(即test = new Obs.MyService()),间谍将起作用,但这将毫无用处,因为CurrentService中不会触及新类实例。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尽管这可能也不起作用,请尝试以下操作:

import * as ObsContainer from 'obs';


describe('CurrentService', () => {

let spy;

 beforeEach(() => {

//test.func();  //this works

spy = spyOn(ObsContainer.MyService, 'func');

    TestBed.configureTestingModule({});
    service = TestBed.get(CurrentService);

    expect(spy).toHaveBeenCalled();