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

angularjs – ui-router在控制器测试中导致“整页重新加载”?

发布时间:2020-12-17 18:07:44 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一些角度控制器测试,但遇到了: 你的一些测试做了整页重装! 我的测试运行httpMock.flush()时出现karma / jasmine错误 通过从我的控制器中删除代码进行故障排除后,它一直是相应的测试,直到它通过,我发现如果我删除$state依赖,测试将通过,所以
我正在尝试编写一些角度控制器测试,但遇到了:

你的一些测试做了整页重装!

我的测试运行httpMock.flush()时出现karma / jasmine错误

通过从我的控制器中删除代码进行故障排除后,它一直是相应的测试,直到它通过,我发现如果我删除$state依赖,测试将通过,所以错误与ui-router有某种关系.

经过更多的挖掘后,它似乎与我的路线文件中包含$urlRouterProvider有关:

App.config(function($stateProvider,$urlRouterProvider) {
 // For any unmatched url,redirect to
 $urlRouterProvider.otherwise('dashboard');

$urlRouterProvider生成window.location.如果我删除$urlRouterProvider.otherwise行,我可以放回$state并且测试通过.

编辑:

经过多挖.

我最终发现我们在$rootScope中的其他地方进行了整页重定向.$on(‘$stateChangeStart’)检查是否存在cookie或将用户注销.

但即使对此进行评论,我也会收到一个新错误:对仪表板视图模板的意外GET请求.我想也许我的测试没有将任何值传递给ui-router机制(我只是通过$state)所以它不知道状态是什么,因此触发$urlRouterProvider.otherwise路由.所以我添加了一个state.transitionTo(‘base.settings.sales-channels.edit’,{channelId:1});在我的测试中.这是一个嵌套状态.

这确实将错误消息更改为错误:意外请求:GET ../src/settings/index.tpl.html,看起来它是父状态的模板,因为设置在销售渠道之前,在我之前编辑州名.

为什么我会收到此错误?我们是否必须嘲笑对所有父州模板的期望?

编辑

这是一个plunkr再现我得到的测试错误
http://plnkr.co/edit/DoaIBqK1JMqbTJj3vlmH?p=preview

编辑

看起来模板GET请求是一个已知问题:https://github.com/angular-ui/ui-router/issues/212

我实现了该问题中提到的状态模拟方法,单元测试现在通过了.

解决方法

我认为你的测试不够集中,你实际上在测试ui-router而不是你自己的代码.例如,我将隔离测试您的控制器,可能断言您的控制器正在暴露适当的值或api.

尽管如此,您可以查看视图期望以满足ui-router将遍历到嵌套状态的$templateCache调用.我在这里摆弄你的代码,测试通过:http://plnkr.co/edit/hjw599oXGCjY03nbVpSN?p=preview

(编辑:李大同)

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

    推荐文章
      热点阅读