jasmine + angular ex 6

by ronapelbaum

HTML

<script src="https://jasmine.github.io/2.4/lib/jasmine.js"></script>
<script src="https://jasmine.github.io/2.4/lib/jasmine-html.js"></script>
<script src="https://jasmine.github.io/2.4/lib/boot.js"></script>
<link rel="stylesheet" href="https://jasmine.github.io/2.4/lib/jasmine.css">
<script src="https://code.angularjs.org/1.4.9/angular.js"></script>
<script src="https://code.angularjs.org/1.4.9/angular-mocks.js"></script>

JavaScript

//--------------BL------------
(function() {
    function MyDataService() {
        this.getNames = function() {
            return ['Alice', 'Bob'];
        }
    }

    function MyController($scope, MyDataService) {
        $scope.greetings = [];
        $scope.init = function() {
            var names = MyDataService.getNames();
            for (var i = 0; i < names.length; i++) {
                var greet = 'Hello ' + names[i];
                $scope.greetings.push(greet);
            }
        }
    }

    //OtherModule
    angular.module('OtherModule', [])
        .service('MyDataService', MyDataService);

    //MyModule
    angular.module('MyModule', ['OtherModule'])
        .controller('MyController', ['$scope', 'MyDataService', MyController]);

})();


//--------------specs------------
describe("MyController test suite", function() {
    var myScope;
    beforeEach(module('MyModule'));

    beforeEach(inject(function($controller, $rootScope) {
        myScope = $rootScope.$new();
        $controller("MyController", {
            $scope: myScope
        });
    }));

    it("should have greetings array", function() {
        expect(myScope.greetings).toBeDefined();
    });

    it("init() should update greetings array", function() {
        myScope.init();
        expect(myScope.greetings.length).toBe(1);
    });

});