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,别的什么都不想。