有没有办法创建使用 CreateSpyObj 创建类中所有方法的间谍?

Dis*_*ive 6 jasmine angular

我正在为我的 Angular 应用程序编写单元测试,并且正在学习如何使用间谍。

目前,我的组件使用的每个服务,我都必须编写这样的内容

let fakeMyService = jasmine.createSpyObj('fakeMyService', ['method1', 'method2']);
fakeMyService.method1.and.returnValue(Observable.of());
fakeMyService.method2.and.returnValue(Observable.of());

TestBed.configureTestingModule({
      declarations: [MyComponent],
      providers: [
        { provide: MyService, useValue: fakeMyService }
      ]
    }).compileComponents();
Run Code Online (Sandbox Code Playgroud)

虽然这可行,但这似乎不是设置我的间谍的最佳方法。首先,我必须在 MyService 中输入我想要放入间谍的每个函数。其次,它不是强类型的。因此,如果我更改名称,我不会立即知道,然后,我必须在每个地方更新它。

有没有某种方法可以让我指定类,它会自动返回一个假类,其中包含所有方法的间谍?

所以像这样的事情

  let fakeMyService = jasmine.createSpyObj<MyService>();
Run Code Online (Sandbox Code Playgroud)

Ken*_*mon -2

您可以只使用 SpyOn( service, method) 来代替,但最好测试服务/模块/工厂中的所有方法