Jasmine replace the return value of function being spied on
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 useFlagForSomething = function () {
if (this.getFlag() === true) {
return "It was true";
} else {
return "It was false";
}
};
return {
getFlag: getFlag,
useFlagForSomething: useFlagForSomething
};
};
// Specs
describe("Testing spies", function () {
it("Should replace the return value of function being spied on", function () {
// Arrange
var myApp = new MyApp();
spyOn(myApp, "getFlag").and.returnValue(true);
// Act
var result = myApp.useFlagForSomething();
// Assert
expect(result).toEqual("It was true");
});
});