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

前端之家收集整理的这篇文章主要介绍了angularjs – 角度测试使用RouteParams的控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要测试一个使用$ 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: '...'}
});
原文链接:https://www.f2er.com/angularjs/145054.html

猜你在找的Angularjs相关文章