【发布时间】:2020-12-16 15:53:47
【问题描述】:
我正在尝试创建一个间谍以确保从 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 中没有触及新的类实例。
感谢您的帮助。
【问题讨论】:
-
你不会在 CurrentService 中注入 obs 吗?你不能只是嘲笑它然后监视它..而不是试图调用真实的东西。
-
没有从节点模块导入Obs
-
在构造函数中调用的函数中调用它
-
只需要确保它被调用,无法访问服务中的函数,因为在构建之前无法设置间谍,并且该函数启动整个应用程序,因此不能轻易创建新服务
标签: node.js angular jasmine karma-jasmine