【问题标题】:How to unit test app.js, $routeProvider, app.config()如何对 app.js、$routeProvider、app.config() 进行单元测试
【发布时间】:2014-01-24 00:50:56
【问题描述】:

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

您将如何对该文件进行单元测试?

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

注意:问题不仅在于测试 $routeProvider,还在于 app.config()。

谢谢!

【问题讨论】:

标签: angularjs angularjs-routing


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 所以,我的 app.run 也在那里,还有一些 routechangestart 处理程序等,我不喜欢这个课程让我的覆盖率报告陷入困境。实际上,(虽然不太可能)测试路由器将确保没有角度变化被破坏,而不仅仅是配置值。假设您升级并且他们将控制器称为其他东西?它会坏掉的。另外,通配符运算符等处理程序中存在逻辑场景。 '/detail/:wildcard*' 或特定参数。
猜你喜欢
  • 2010-09-15
  • 2012-01-08
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 2019-01-05
  • 2011-03-16
  • 2013-01-02
相关资源
最近更新 更多