加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 08:13:47 所属栏目:安全 来源:网络整理
导读:如何测试控制器具有解决属性? 它抛出一个错误:未知的提供者:InitProvider,在测试期间,可以理解。 如何测试? 我使用route config中的init属性来加载数据,并通过控制器实例将其传递给控制器??,因此路由在数据加载之前不会更改。 $routeProvider .when(
如何测试控制器具有解决属性?
它抛出一个错误:未知的提供者: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 });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读