Angular 创建一个没有';t实现原始服务的所有方法

Angular 创建一个没有';t实现原始服务的所有方法,angular,typescript,Angular,Typescript,假设我有一个具有多种方法的原始服务 class OriginalService { method1() { } method2() { } method3() { } .. } 我想创建一个模拟的OriginalService,它只与method1一起使用 如果我写以下内容,typescript将告诉我mockService let mockService: OriginalService; mockService = { method1() { } 如何将mockS

假设我有一个具有多种方法的原始服务

class OriginalService {

  method1() { }
  method2() { }
  method3() { }
.. 
}
我想创建一个模拟的
OriginalService
,它只与
method1
一起使用

如果我写以下内容,typescript将告诉我
mockService

let mockService: OriginalService;
mockService = {
  method1() {
  }

如何将
mockService
声明为
OriginalService
,而不必编写
OriginalService
的所有属性?

扩展
OriginalService
类:

class MockService extends OriginalService {
   method1() {
      // let's override this method!
  }
}

let mockService = new MockService();
this.mockService.method1();
请查看以下文档:


希望我能帮助你!祝你好运

您可能想反过来定义一个只包含要模拟的方法的接口

interface Service {
    method1();
}

let realService: Service;
let mockService: Service;

realService = new RealService();
mockService = {
    method1() {
        ...
    }
}
然后,当您调用该特定方法时,您只需要知道它适合接口

function test(svc: Service) {
    svc.method1();
}

您甚至可以声明多个接口,每个模拟一个接口,而真正的服务可以实现所有接口。

这不好,因为除了overident方法之外,我将实例化真正的服务。我只想用method1实例化一个mock,别的什么都不想。