#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...