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: '/' }); })); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |