angularjs – 角度测试使用RouteParams的控制器
发布时间:2020-12-17 08:25:04 所属栏目:安全 来源:网络整理
导读:我需要测试一个使用$ routeParams来定义它的控制器。也许这是一个测试问题,或者我写错了控制器的方式,所以现在我不能写一个测试。 这是我的控制器 angular.module('cmmApp').controller('UserCtrl',function ($scope,$location,$routeParams,$ionicLoading
我需要测试一个使用$ routeParams来定义它的控制器。也许这是一个测试问题,或者我写错了控制器的方式,所以现在我不能写一个测试。
这是我的控制器 angular.module('cmmApp') .controller('UserCtrl',function ($scope,$location,$routeParams,$ionicLoading,$ionicPopup,Userservice) { //if a user id is set retrieve user information if(typeof $routeParams.id !== 'undefined'){ var loader = $ionicLoading.show({content: "Retrieving user data"}); var user = Userservice.get({id: $routeParams.id}).$promise; user.then(function(res){ console.log(res); $scope.user = res.user; loader.hide(); }); } //else create an empty resource else { $scope.user = new Userservice; } }); 基本上我只想加载资源,如果提供了一个id是$ routeParams,否则创建一个空的资源。 这里是测试: 'use strict'; describe('Controller: UserCtrl',function () { // load the controller's module beforeEach(module('cmmApp')); var UserCtrl,scope,routeParams; // Initialize the controller and a mock scope beforeEach(inject(function ($controller,$rootScope,Userservice) { scope = $rootScope.$new(); routeParams = $routeParams; UserCtrl = $controller('UserCtrl',{ $scope: scope }); console.log("routeParams"); routeParams = {id: 8490394}; console.warn(routeParams); })); it('should create an epmty user',function () { console.log(scope.user); expect(scope.user).toEqual({}); }); }); 当我运行grunt test karma回复: Controller: UserCtrl should create an epmty user FAILED Expected { } to equal { }. Error: Expected { } to equal { }. at null.<anonymous> (/Users/carlopasqualicchio/Sites/CMM_Ionic/test/spec/controllers/user.js:28:24) 我正在赢得如何告诉业务在运行测试之前更改$ routeParams.id,并在两个不同的测试中分配一个不同的值(我需要在第一个测试中将其设置为null,并将值设置为另一个)。 任何帮助是赞赏。 谢谢,马特
您可以使用$ controller(locals对象)的第二个参数传递自定义$ routeParams对象,即与传递$ scope相同:
UserCtrl = $controller('UserCtrl',{ $scope: scope,$routeParams: {id: '...'} }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |