之间有什么区别







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

09-25 18:34