如何鍵入模擬對象的服務?如何鍵入模擬對象
假設我有MyService
有someMethod
。 我創建的MyService
一個模擬像這樣:
let mockMyService = jasmine.createSpyObject('mockMyService', ['someMethod'])
我應該怎樣輸入mockMyService
?
如果我鍵入它作爲MyService
,打字稿compliler不會讓你遇到mockMyService.someMethod.and
如何鍵入模擬對象的服務?如何鍵入模擬對象
假設我有MyService
有someMethod
。 我創建的MyService
一個模擬像這樣:
let mockMyService = jasmine.createSpyObject('mockMyService', ['someMethod'])
我應該怎樣輸入mockMyService
?
如果我鍵入它作爲MyService
,打字稿compliler不會讓你遇到mockMyService.someMethod.and
首先,根據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');
希望我能幫助。
您可以鍵入以通常的方式模擬:
let mockMyService: MyService = jasmine.createSpyObj('mockMyService', ['someMethod']);
當您嘗試使用它的方法作爲間諜,你所看到的問題是,你還沒有告訴打字稿他們間諜,請嘗試:
(mockMyService.someMethod as Spy).and.returnValue(...);
//^note