jasmine: spyOn(obj, ‘method’).andCallFake or and.callFake?

Yes, the spy API changed from Jasmine 1.3.1 to Jasmine 2.0. There’s no “correct” version. If you can find the tool support for Jasmine 2.0, I would recommend upgrading.

Jasmine 1.3.1 syntax (documentation [archived link])

spyOn(mBankAccountResource, 'getBankAccountData').andCallFake(fakedFunction);
expect(mBankAccountResource.getBankAccountData.mostRecentCall.args).toEqual(["foo"]);

Jasmine 2.0 syntax (documentation [archived link])

// Methods moved to 'and' property
spyOn(mBankAccountResource, 'getBankAccountData').and.callFake(fakedFunction);

// Call data moved to 'calls' property
expect(mBankAccountResource.getBankAccountData.calls.mostRecent().args).toEqual(["foo"]);

I mention tool support because it seems that’s the problem you’re having. Jasmine 2.0 has only been out for a couple of months (at the time of writing). Support for Jasmine 2.0 in Karma, by comparison, has been out for a couple of weeks (I’m not sure about other tools).

To solve your issue, investigate which tool(s) you’re using to run tests and see if any of them support Jasmine 2.0. If all of them do, then go for the upgrade. Otherwise, downgrade your browser tests to Jasmine 1.3.1 and wait until tool support is better. Just make sure you’re consistent across the board.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)