Using Jasmine to spy on variables in a function
28,896
Not really. You can do the following though:
Test the result of fun1()
:
expect(fun1(5)).toEqual(5);
Make sure it's actually called (useful if it happens through events) and also test the result:
var spy = jasmine.createSpy(window, 'fun1').andCallThrough();
fire_event_calling_fun1();
expect(spy).toHaveBeenCalled();
expect(some_condition);
Really reproduce the whole function inspecting intermediate results:
var spy = jasmine.createSpy(window, 'fun1').andCallFake(function (a) {
var local_a = a;
expect(local_a).toEqual(a);
local_a += 5;
expect(local_a).toEqual(a+5);
return local_a/2;
});
fun1(42);
expect(spy).toHaveBeenCalled();
![Chetter Hummin](https://i.stack.imgur.com/UQntG.jpg?s=256&g=1)
Author by
Chetter Hummin
Still learning... Like to code in Prolog, SQL and Java mostly. Looking to expand that list !
Updated on July 09, 2022Comments
-
Chetter Hummin almost 2 years
Suppose I have a function as follows
function fun1(a) { var local_a = a; local_a += 5; return local_a/2; }
Is there a way to test for the value of local_a being what it should be (for example in the first line of code)? I'm a bit new to Jasmine, so am stuck. Thanks in advance.
-
Chetter Hummin over 12 yearsI kind of suspected this would be the case. But thanks for the detailed answer. The second approach was new for me!
-
ggozad over 12 yearsAh glad you liked it. You can see more about spies at github.com/pivotal/jasmine/wiki/Spies and pivotal.github.com/jasmine/jsdoc/symbols/jasmine.Spy.html