我正在尝试创建一个间谍,以确保从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中不会触及新类实例。
感谢您的帮助。
答案 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();