加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 使用$state.transitionTo的单元测试控制器

发布时间:2020-12-17 07:46:30 所属栏目:安全 来源:网络整理
导读:在控制器内,我有一个使用$state.transitionTo来“重定向”到另一个状态的功能. 现在我被困在测试这个功能,我总是错误错误:没有这样的状态’状态二’.我该怎么测试呢?对于我来说,控制器并不了解其他国家的任何信息,但是我如何模拟这个状态呢? 一些代码: a
在控制器内,我有一个使用$state.transitionTo来“重定向”到另一个状态的功能.

现在我被困在测试这个功能,我总是错误错误:没有这样的状态’状态二’.我该怎么测试呢?对于我来说,控制器并不了解其他国家的任何信息,但是我如何模拟这个状态呢?

一些代码:

angular.module( 'mymodule.state-one',[
  'ui.state'
])

.config(function config($stateProvider) {
  $stateProvider.state('state-one',{
    url: '/state-one',views: {
      'main': {
        controller: 'MyCtrl',templateUrl: 'mytemplate.tpl.html'
      }
    }
  });
})

.controller('MyCtrl',function ($scope,$state) {
    $scope.testVar = false;
    $scope.myFunc = function () {
      $scope.testVar = true;
      $state.transitionTo('state-two');
    };

  }
);
describe('- mymodule.state-one',function () {

  var MyCtrl,scope

  beforeEach(module('mymodule.state-one'));

  beforeEach(inject(function ($rootScope,$controller) {

    scope = $rootScope.$new();

    MyCtrl = $controller('MyCtrl',{
      $scope: scope
    });

  }));

  describe('- myFunc function',function () {
    it('- should be a function',function () {
      expect(typeof scope.myFunc).toBe('function');
    });

    it('- should test scope.testVar to true',function () {
      scope.myFunc();
      expect(scope.testVar).toBe(true);
      expect(scope.testVar).not.toBe(false);
    });
  });
});
免责声明:我自己没有这样做,所以我完全不知道它是否会奏效,是你以后的事情.

从我的头顶,我的脑海里有两个解决方案.

1.)在你的测试中,配置$stateProvider为状态2返回一个嘲笑状态这也是ui-router项目本身测试状态转换的方式.

见:https://github.com/angular-ui/ui-router/blob/04d02d087b31091868c7fd64a33e3dfc1422d485/test/stateSpec.js#L29-L42

2.)捕获并解析异常,并将其解释为满足测试,如果尝试进入状态二

第二种方法似乎非常黑客,所以我会投票选举第一.

然而,有可能我完全错了,应该休息一下.

解决方案代码:

beforeEach(module(function ($stateProvider) { 
  $stateProvider.state('state-two',{ url: '/' }); 
}));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读