正如我们在这里看到的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