#A - testing routes and controllers with Jasmine

.run($route) fails servers

by Krzysztof Safjanowski

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>
<script src="https://code.angularjs.org/1.2.1/angular-route.js"></script>
<script src="https://code.angularjs.org/1.2.1/angular-resource.js"></script>

JavaScript

//--- CODE --------------------------
(function (angular) {
    var myApp = angular.module('myApp', ['ngRoute', 'ngResource'])

    myApp.config(function ($locationProvider, $routeProvider) {
        $locationProvider.html5Mode(true);

        $routeProvider.when('/bar', {
            templateUrl: 'bar.html',
            controller: 'bar',
            resolve: {
                baz: function () {
                    alert('bar controller: $route has executed me');
                    return 'quux'
                }
            }
        }).when('/foo', {
            templateUrl: 'foo.html',
            controller: 'foo'
        }).otherwise({
            redirectTo: '/bar'
        });
    }).run(function ($route) {
        // $route fails tests
    });

    myApp.controller('bar', function ($scope, baz) {
        $scope.testValue = 'test environment';
    });

    myApp.controller('foo', function ($scope) {
        $scope.testValue = 'test environment';
    });

    myApp.service('baz', function (apiResource) {
        this.load = function() {
            return apiResource.get();
        }
    });
    
    myApp.factory('apiResource', function($resource) {
        return $resource('/someApi/', {}, {
            get: {method: 'GET'}
        })
    })


})(angular);

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

    beforeEach(function () {
        module('myApp');
    });
    
    describe('baz service', function() {
        var baz,
            $httpBackend;
        
        beforeEach(inject(function (_$httpBackend_, _baz_) {
            baz = _baz_;
            $httpBackend = _$httpBackend_;
        }));
        
        it('executes api loading', function() {
            baz.load();
            $httpBackend.expectGET(/some/).respond(200, {});
            $httpBackend.flush();
        });
    })

    describe('foo controller', function () {
        var scope,
            controllerInstantiate;
        
        beforeEach(inject(function...