是什麼爲什麼要用spyOn代替jasmine.createSpy?
jasmine.createSpy( '的someMethod')
而且
spyOn(someObject '的someMethod')
爲什麼之間的區別應該選擇使用spyOn嗎?
我的猜測是,第一個替代方法將匹配someMethod方法,無論它包含哪個對象,但spyOn只會匹配它包含在someObject中。因此,使createSpy只是一個更通用的匹配器?
是什麼爲什麼要用spyOn代替jasmine.createSpy?
jasmine.createSpy( '的someMethod')
而且
spyOn(someObject '的someMethod')
爲什麼之間的區別應該選擇使用spyOn嗎?
我的猜測是,第一個替代方法將匹配someMethod方法,無論它包含哪個對象,但spyOn只會匹配它包含在someObject中。因此,使createSpy只是一個更通用的匹配器?
不同的是,你應該有對象的方法與spyOn
const o = { some(): { console.log('spied') } };
spyOn(o, 'some');
,同時爲您創建了createSpy()
模擬方法:
const o = {};
o.some = jasmine.createSpy('some');
的spyOn
的優點是,您可以撥打原始方法:
spyOn(o, 'some').and.callThrough();
o.some(); // logs 'spied'
而@estus說,在spyOn
的情況下,測試後恢復原始方法。這應該在重新分配時手動完成。
更重要的是,原始方法在'spyOn'情況下的測試後恢復。這應該在使用'o.some ='重新分配時手動完成。 – estus
@estus,謝謝你的補充) –
此外,對於其它精細答案:
spyOn()
窺探(截距)的對象上的現有的方法來跟蹤其他模塊,以它的呼叫。jasmine.createSpy()
創建一個函數,該函數可以作爲回調或Promise處理函數傳遞以跟蹤回調。
嘿,沒有[我的回答](https://stackoverflow.com/a/45074442/2545680)有幫助嗎? –