Jasmine verify a spy was called
Uses Jasmine 3.5
by Joe Wilson
HTML
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/3.5.0/jasmine.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/3.5.0/jasmine.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/3.5.0/jasmine-html.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/3.5.0/boot.min.js"></script>
JavaScript
// Code under test
var MyApp = function () {
var getFlag = function () {
return false;
};
var reallyImporatantProcess = function () {
// Do something really important
};
var useFlagForSomething = function () {
if (this.getFlag() === true) {
return "It was true";
} else {
this.reallyImporatantProcess();
return "It was false";
}
};
return {
getFlag: getFlag,
reallyImporatantProcess: reallyImporatantProcess,
useFlagForSomething: useFlagForSomething
};
};
// Specs
describe("Testing spies", function () {
it("Should verify a spy was called", function () {
// Arrange
var myApp = new MyApp();
spyOn(myApp, "reallyImporatantProcess");
// Act
var result = myApp.useFlagForSomething();
// Assert
expect(myApp.reallyImporatantProcess).toHaveBeenCalled();
expect(result).toEqual("It was false");
});
});