之间有什么区别
和
为什么要选择使用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
,则在测试后将恢复原始方法。重新分配时应手动完成。