之间有什么区别
jasmine.createSpy( '的someMethod')
和
spyOn(someObject,'someMethod')
为什么要选择使用spyOn?
我的猜测是,第一个替代方法将匹配方法someMethod,无论它包含在哪个对象中,但spyOn只会匹配someObject中包含的对象。这样makeSpy只是一个更通用的匹配器?
答案 0 :(得分:25)
区别在于你应该在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
的情况下,原始方法在测试后恢复。这应该在重新分配时手动完成。
答案 1 :(得分:6)
除了另一个好的答案:
spyOn()
间谍(拦截)对象上的现有方法,以跟踪对其的模块的调用。jasmine.createSpy()
创建一个可以作为回调传递的函数或Promise处理程序来跟踪回叫。