2017-06-21 140 views
0

我在寫單元測試我的角度項目,打字稿打字稿+ jasmine.createSpy()

當我試圖對某些服務創建模擬,我用這樣的方式:

const serviceMock = <IMyService>{ 
    method: _.noop, 
}; 

beforeEach(inject($injector => { 
    testingService = new AccountingService(serviceMock); 

    spyOn(serviceMock, 'method').and.callFake(()=>'hello'); 
} 

該工程確定 但是當我試圖用jasmine.createSpy(),我得到的編譯錯誤:

const serviceMock = <IMyService>{ 
    method: jasmine.createSpy('method').and.callFake(()=>'hello'), 
}; 

Type '{ method: Spy;}' cannot be converted to type 'MyService'. Property 'getParams' is missing in type '{ method: Spy;}'. 

getParams是私有方法

我在做什麼錯?

回答

0

與映射類型

export type Spied<T> = { 
    [Method in keyof T]: jasmine.Spy; 
}; 

嘗試它,與它投下您的服務模擬

const serviceMock = Spied<IMyService>{ 

看一看here的詳細描述