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");
    });

});