Angular unit tests exercise solution

Angular unit tests exercise solution

by Yang Tyler

HTML

<script src="http://jasmine.github.io/1.3/lib/jasmine.js"></script>
<script src="http://jasmine.github.io/1.3/lib/jasmine-html.js"></script>
<link rel="stylesheet" href="http://jasmine.github.io/1.3/lib/jasmine.css">
<script src="http://code.angularjs.org/1.2.9/angular.js"></script>
<script src="http://code.angularjs.org/1.2.9/angular-mocks.js"></script>

JavaScript

var myApp = angular.module('myApp', []);
myApp.service('mySrv', [function () {
    this.testFunc = function() {
        return "do something";   
    }
}]);

myApp.controller('myCtrl', ['$scope', 'mySrv', function ($scope, mySrv) {
    $scope.result = mySrv.testFunc();
}]);

// ---SPECS-------------------------
describe('myCtrl', function () {

    var myCtrl, scope;
    beforeEach(function () {
        //This will work
        /*
        module('myApp');
        module(function($provide) {
            $provide.service("mySrv", function() {
                this.testFunc = function() {
                    return "do some test stuff";  
                };
            });
        });
        */
        module('myApp', function($provide) {
            $provide.service("mySrv", function() {
                this.testFunc = function(){ 
                    return "do some test stuff";
                };
            });
        });
    });
    beforeEach(inject(function ($rootScope, $controller) {
         rootScope = $rootScope;
         scope = $rootScope.$new();

         myCtrl = $controller('myCtrl', {
             $scope: scope
         });
    }));
    it("should return 'do some test stuff' if this will work'", function() {
        expect(scope.result).toBe("do some test stuff");
               });
    
});



// --- Runner -------------------------
(function () {
    var jasmineEnv = jasmine.getEnv();
    jasmineEnv.updateInterval = 1000;

    var htmlReporter = new jasmine.HtmlReporter();

    jasmineEnv.addReporter(htmlReporter);

    jasmineEnv.specFilter = function (spec) {
        return htmlReporter.specFilter(spec);
    };

    var currentWindowOnload = window.onload;

    window.onload = function () {
        if (currentWindowOnload) {
            currentWindowOnload();
        }
        execJasmine();
    };

    function execJasmine() {
        jasmineEnv.execute();
    }

})();