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