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();
Share:
28,896
Chetter Hummin
Author by

Chetter Hummin

Still learning... Like to code in Prolog, SQL and Java mostly. Looking to expand that list !

Updated on July 09, 2022

Comments

  • Chetter Hummin
    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
    Chetter Hummin over 12 years
    I kind of suspected this would be the case. But thanks for the detailed answer. The second approach was new for me!
  • ggozad
    ggozad over 12 years