嗨,我正在使用AngularJS构建一个应用程序,我被困在单元测试部分。我知道如何为控制器编写单元测试,但我不知道如何为routeProvider做它。我正在使用茉莉花写单元测试。
我的路由提供商将看起来像这样;
var app = angular.module('MyApp',['ngResource']) app.config(function ($routeProvider) { $routeProvider .when('/',{ templateUrl: 'app/views/main.html',controller: 'MainCtrl' }) .when('/home/:PartyID',{ templateUrl: 'app/views/home.html',controller: 'HomeCtrl' }) .when('/edit/:PartyID',{ templateUrl: 'app/views/update_profile.html',controller: 'EditCtrl' }) .when('/route',{ templateUrl: 'app/views/route.html',controller: 'RouteCtrl' }) .when('/signup',{ templateUrl: 'app/views/signup.html',controller: 'SignupCtrl' }) .when('/login',{ templateUrl: 'app/views/login.html',controller: 'LoginCtrl' }) .otherwise({ redirectTo: '/' }); });
如何使用Jasmine为此routeProvider写入单元测试?
是的,你可以,快速的答案,下面是一小段代码,可以使用和扩展,以测试路线带你到你想要的地方。
describe('Testing routes',function() { beforeEach(module('windscreens')); var location,route,rootScope; beforeEach(inject( function( _$location_,_$route_,_$rootScope_ ) { location = _$location_; route = _$route_; rootScope = _$rootScope_; })); describe('Login route',function() { beforeEach(inject( function($httpBackend) { $httpBackend.expectGET('login') .respond(200); })); it('should load the login page on successful load of /login',function() { location.path('/login'); rootScope.$digest(); expect(route.current.controller).toBe('LoginCtrl') }); }); });