单元测试 – 如何在AngularJS中测试具有解析属性的控制器?

前端之家收集整理的这篇文章主要介绍了单元测试 – 如何在AngularJS中测试具有解析属性的控制器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何测试控制器具有解决属性
它抛出一个错误:未知的提供者:InitProvider,在测试期间,可以理解。
如何测试?

我使用route config中的init属性来加载数据,并通过控制器实例将其传递给控制器​​,因此路由在数据加载之前不会更改。

$routeProvider
    .when('/topic/:topic_id/content/:content_id',{
      templateUrl: 'views/content.html',controller: 'ContentCtrl',resolve: {
      init: ContentCtrl.init
    }
    });

模式是完全错了吗?

'use strict';

var ContentCtrl = ['$scope','$location','$routeParams','init',function ($scope,$location,$routeParams,init) {

    $scope.contents = init.contents;

  }];

ContentCtrl.init = ['$q','app_config','$log','$timeout',function ($q,app_config,$log,$timeout) {

    var defer = $q.defer();

    $log.log("ContentCtrl loading..");

    $timeout(function() {
        defer.resolve({contents: [
                                    {message: 'Hello!'}
                                  ]});

        $log.log("ContentCtrl loaded.");

    },2000);

    return defer.promise;
}];

angular.module('studentportalenApp').controller('ContentCtrl',ContentCtrl);

我想将整个控制器封装在.controler(‘ContentCtrl’,function(){…})中,但是还没有弄清楚如何正确地完成这个操作,以使init在路由配置中可用。

在这里同样的事情。我用这个方法解决了它: https://groups.google.com/forum/?fromgroups=#!topic/angular/LzXm-9nwkjY

基本上,我嘲笑通常使用简单变量发送的数据,并将其添加到测试中的控制器。在你的情况下,我认为它会像:

var initData = {
      contents: [{message: 'Hello!'}]
};
$controller("ContentCtrl",{ $scope: ...,init: initData });

猜你在找的Angularjs相关文章