单元测试 – 如何在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 });
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
