What is the difference between
jasmine.createSpy(\'someMethod\')
And
spyOn(someObject, \'someMethod\')
Additionally to the other fine answer:
spyOn()
to spy (intercept) an existing method on an object to track calls of other modules to it.jasmine.createSpy()
to create a function that can be passed as callback or Promise handler to track call-backs.The difference is that you should have a method on the object with spyOn
const o = { some(): { console.log('spied') } };
spyOn(o, 'some');
while the mock method is created for your with createSpy()
:
const o = {};
o.some = jasmine.createSpy('some');
The advantage of the spyOn
is that you can call the original method:
spyOn(o, 'some').and.callThrough();
o.some(); // logs 'spied'
And as @estus says the original method is restored after the test in case of spyOn
. This should be done manually when it's reassigned with.