2017-08-17 57 views
0

如何鍵入模擬對象的服務?如何鍵入模擬對象

假設我有MyServicesomeMethod。 我創建的MyService一個模擬像這樣:

let mockMyService = jasmine.createSpyObject('mockMyService', ['someMethod']) 

我應該怎樣輸入mockMyService

如果我鍵入它作爲MyService,打字稿compliler不會讓你遇到mockMyService.someMethod.and

回答

-1

首先,根據documentation,是不是叫createSpyObj代替createSpyObject

但是它指出它返回一個對象作爲Spys作爲其成員:

(靜態)createSpyObj(baseNameopt,方法名)→{對象}

創建包含多個Spys作爲一個對象其成員。

因此,它不是一個jasmine.Spy對象,而是一個{ [key: string]: jasmine.Spy }類型的對象。

let mockMyService: { [key: string]: jasmine.Spy } = jasmine.createSpyObj('mockMyService', ['someMethod']); 

不過,如果你只對一個方法窺探你可能只是簡單地做:

let mockMyService: jasmine.Spy = createSpy('mockMyService', 'someMethod'); 

希望我能幫助。

-1

您可以鍵入以通常的方式模擬:

let mockMyService: MyService = jasmine.createSpyObj('mockMyService', ['someMethod']); 

當您嘗試使用它的方法作爲間諜,你所看到的問題是,你還沒有告訴打字稿他們間諜,請嘗試:

(mockMyService.someMethod as Spy).and.returnValue(...); 
         //^note