Wie wir hier sehen in http://docs.angularjs.org/tutorial/step_07,AngularJS Route Unit-Tests
angular.module('phonecat', []).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/phones', {templateUrl: 'partials/phone-list.html', controller: PhoneListCtrl}).
when('/phones/:phoneId', {templateUrl: 'partials/phone-detail.html', controller: PhoneDetailCtrl}).
otherwise({redirectTo: '/phones'});
}]);
Routing-Test zu tun mit e2e Test vorgeschlagen,
it('should redirect index.html to index.html#/phones', function() {
browser().navigateTo('../../app/index.html');
expect(browser().location().url()).toBe('/phones');
});
Aber ich denke, die '$ routeProvider' config getan mit einer einzigen Funktion, Funktion ($ routeProvider), und wir sollten in der Lage, Test ohne Beteiligung des Browsers zu testen, da ich denke, Routing-Funktion erfordert keine Browser-DOM.
Zum Beispiel
wenn URL ist/foo muss templateUrl sein /partials/foo.html und Controller ist FooCtrl
wenn URL ist/bar, muß templateUrl sein /partials/bar.html und Controller ist BarCtrl
Es ist eine einfache Funktion IMO, und es sollte auch in einem einfachen Test, einem Komponententest getestet werden.
ich gegoogelt und für diesen $ routeProvider Unit-Test gesucht, aber kein Glück noch.
Ich denke, ich kann einen Code von hier ausleihen, konnte es aber noch nicht machen, https://github.com/angular/angular.js/blob/master/test/ng/routeSpec.js.
ist keiner der 2 gut genug? – Maarten
Man muss sich fragen, ob dies einen Komponententest ergeben würde, der den tatsächlichen Wert liefert; Die Konfiguration der meisten Routen entspricht genau der Konfiguration, und der Komponententest würde auf "Ist/einige/Route gleich/einige/Route?" – fwielstra
@fwielstra, Ja, diese Art von Test fühlt sich an wie [zweispaltige] (http://en.wikipedia.org/wiki/Double-entry_bookkeeping_system). Andererseits finde ich die meisten Tests so. Auf der anderen Seite finde ich Doppeleintrag nützlich. – zhon