如何对app.js,$ routeProvider,app.config()进行单元测试

时间:2014-01-23 15:35:36

标签: angularjs angularjs-routing

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()。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

问这个有意义吗?嗯..我认为这是值得商榷的。我多次问自己这个问题。 我们如何确保我们用作配置的值是正确的?

我不确定将其称为“单元测试”是否正确,即使配置是流畅的配置。

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

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

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

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