为什么要用spyOn代替jasmine.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)有帮助吗? –