2016-10-04 176 views
0

我使用Angular 2 Karma-Jasmine。 我有AService,Angular2嘲諷注射服務

it("test",() => { 
    let x:any = function1('value', aService); 
    expect(x).toEqual("value1"); 
}); 

現在AServicegetA()方法,以及使用function1方法getA()。 我想模擬AService.getA方法?

請告訴我嘲笑的最佳方式AService

+0

你在測試使用依賴注入打字稿的結構類型系統的解釋?請提供一個更大的例子。 – Supamiu

+0

我沒有例子deat @ Supamiu,我想學習在angular2-jasmine-karma中嘲笑的最佳方式。 我的函數1是靜態的,通過AServcie,沒有注入。 – emanuel07

回答

1

如果function的簽名是接受AService

function1(value, service: AService) {} 

,那麼你需要確保模擬與AService兼容。如果AService只有一個方法getA,那麼你真的只需要做

let mockA = { 
    getA:() => { 
    // mock implementation 
    } 
} 

如果AService具有不僅僅是getA更多的方法,你不希望有實現這一點,那麼你可以在「投」的模擬輸入AService

let mock = <AService>{ same as above } 

或者如果function1參數的類型不能爲AService,那麼你可以真傳任何它。

請參見:

+0

我的AService也有其他方法。在這種情況下該怎麼辦?請編輯該案例的答案。 – emanuel07

+0

查看我編輯的「cast」示例 –

+0

謝謝,這可能是嘲笑的最佳解決方案嗎? – emanuel07