gpt4 book ai didi

angularjs - Angular 测试使用 RouteParams 的 Controller

转载 作者:行者123 更新时间:2023-12-03 10:55:48 24 4
gpt4 key购买 nike

我需要测试一个使用 $routeParams 的 Controller 定义它的 Action 。可能是测试问题,或者是我写 Controller 的方式不对,所以现在写不了测试。

这是我的 Controller

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, $routeParams, 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)

我在想如何告诉 karma 改变 $routeParams.id在运行测试之前,并在两个不同的测试中分配不同的值(我需要在第一个测试中将其设置为 null,并为另一个设置一个值)。

任何帮助表示赞赏。

谢谢,马特。

最佳答案

您可以通过自定义 $routeParams使用 $controller 的第二个参数的对象(locals 对象),即与您传递 $scope 的方式相同:

UserCtrl = $controller('UserCtrl', {
$scope: scope,
$routeParams: {id: '...'}
});

关于angularjs - Angular 测试使用 RouteParams 的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com