繁体   English   中英

来自 node_modules 的 Angular 单元测试 spyOn 类

[英]Angular unit test spyOn class from node_modules

我正在尝试创建一个间谍以确保从 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();

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

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

问题是无法识别 spy 中的 func 方法,即使 test.func() 有效(请参阅注释掉的部分代码)。

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

谢谢您的帮助。

试试这个,虽然这可能也不起作用:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM