2014-01-23 34 views
2

在angularjs一个典型的app.js文件是这样的:

var phonecatApp = angular.module('phonecatApp', [ 
    'ngRoute', 
    'phonecatControllers' 
]); 

phonecatApp.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' 
     }); 
    }]); // the example is taken from the angularjs tutorial 

你将如何单元测试这个文件?

这是有点前卫和百分比覆盖导向。首先测试它有意义吗? 我认为是的,因为当浏览到某个网址时,我想确保使用正确的路线。

注意:这个问题不仅是关于测试$ routeProvider,而且关于app.config()。

谢谢!

+0

这个问题回答了我的想法。我有同样的问题,但重新配置为“测试routeChange事件”http://stackoverflow.com/questions/19093010/jasmine-unit-test-case-for-routechangestart-in-angularjs – FlavorScape

回答

1

您在问如何测试配置设置。

问这是否有意义?那么..我认为这是有争议的。我多次问自己这个问题。 我们如何确保我们用作配置的值是正确的?

即使配置是一个流畅的配置,我不确定称它为“单元测试”是正确的。

我认为你不应该担心“测试”配置设置,因为“测试”配置会导致冗余和递归。让我进一步详细说明我的意思。当添加的配置设置,如:

when('/phones', { 
     templateUrl: 'partials/phone-list.html', 
     controller: 'PhoneListCtrl' 
     }). 

测试将看到,对于路线/phones您将使用controller'PhoneDetailCtrl'的唯一的事情。这样做不会测试任何东西,只是验证一些字符串对是正确的。这会引起递归问题。通过“验证”字符串值,您如何知道“测试”配置的人正在使用正确的值?你不应该测试测试吗?

从技术角度回答你的问题..如何测试..我不知道如何测试routeProvider的配置,但我认为你不应该这样做。

+0

所以,我的app.run是在那里也有一些routechangestart处理程序等等,我不喜欢这个课程让我的覆盖报告陷入困境。实际上,(尽管不太可能)测试路由器将确保没有角度变化破坏,而不仅仅是配置值。说你升级了,他们把控制器A称为别的东西?它会中断。另外,像通配符运算符这样的处理程序中有逻辑的情况。 '/ detail /:通配符*'或特定的参数。 – FlavorScape