2017-04-11 68 views
0

假設我有一個具有多個方法創建一個不執行原服務

class OriginalService { 

    method1() { } 
    method2() { } 
    method3() { } 
.. 
} 

的OriginalService的所有方法的模擬,我想創造一個OriginalService模擬,將只與method1使用。

如果我寫了下面,打字稿會告訴我方法缺少mockService

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

我怎樣才能申報mockServiceOriginalService,而無需編寫的OriginalService所有屬性?

回答

0

擴展OriginalService類:

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

let mockService = new MockService(); 
this.mockService.method1(); 

在這個文件看看:https://www.typescriptlang.org/docs/handbook/classes.html

希望我幫你!上帝的運氣和良好的編碼!

+0

這是不好的,因爲我將實例化實際的服務期望爲overident方法。我想用method1實例化一個模擬,沒有別的。 – Lev

0

您可能想要另闢蹊徑並定義一個僅包含您將要模擬的方法的接口。

interface Service { 
    method1(); 
} 

let realService: Service; 
let mockService: Service; 

realService = new RealService(); 
mockService = { 
    method1() { 
     ... 
    } 
} 

然後,當你調用特定的方法時,你只需要知道它適合接口。

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

你甚至可以聲明多個接口,每個模擬一個,真正的服務可以實現它們。