angularjs – 角度测试使用RouteParams的控制器

前端之家收集整理的这篇文章主要介绍了angularjs – 角度测试使用RouteParams的控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要测试一个使用$ routeParams来定义它的控制器。也许这是一个测试问题,或者我写错了控制器的方式,所以现在我不能写一个测试。

这是我的控制器

@H_301_3@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,否则创建一个空的资源。

这里是测试:

@H_301_3@'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回复

@H_301_3@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相同: @H_301_3@UserCtrl = $controller('UserCtrl',{ $scope: scope,$routeParams: {id: '...'} });

猜你在找的Angularjs相关文章