正如我們在這裏看到的http://docs.angularjs.org/tutorial/step_07,建議angularjs路線的單元測試
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'});
}]);
路由測試與端到端測試完成後,
it('should redirect index.html to index.html#/phones', function() {
browser().navigateTo('../../app/index.html');
expect(browser().location().url()).toBe('/phones');
});
不過,我認爲「$ routeProvider」配置是完成一個函數,函數($ routeProvider),並且我們應該能夠在沒有瀏覽器參與的情況下進行單元測試,因爲我認爲路由功能不需要瀏覽器DOM。
例如,
當URL是/ foo,templateUrl必須/partials/foo.html和控制器是FooCtrl
當URL是/巴,templateUrl必須/partials/bar.html和控制器是BarCtrl
這是一個簡單的函數IMO,它也應該在一個簡單的測試,單元測試中測試。
我使用Google搜索和搜索此$ routeProvider單元測試,但沒有運氣。
我想我可以從這裏借一些代碼,但是還沒有成功,https://github.com/angular/angular.js/blob/master/test/ng/routeSpec.js。
既不夠好? – Maarten
但是,人們不得不懷疑這是否會產生提供實際價值的單元測試;大多數路由配置就是這樣,配置和單元測試會歸結爲'是/某些/路由等於/某些/路由?' – fwielstra
@fwielstra,是的,這種測試感覺像[複式](http://en.wikipedia.org/wiki/Double-entry_bookkeeping_system)。再次,我發現大多數測試都是這樣。另一方面,我覺得複製條目很有用。 – zhon