单元测试控制器,在控制器中具有 $state.go 方法
Unit testing controller which has a $state.go method in controller
如何为具有 $state.go () 并期望重定向到该特定 sate 的函数编写单元测试?
$scope.inviteMembers = (id)=> {
$state.go('invite', {deptId: id});
}
由于它是一个单元测试,你只需要确保函数被调用,仅此而已。
大致如下:
it('should move to the invite page after inviting someone', function() {
spyOn($state, 'go');
$scope.inviteMembers(1);
expect($state.go).toHaveBeenCalledWith('invite', {deptId: 1});
});
所以这里的主要思想是监视$state
的go
方法,当我们调用该方法时,我们只需要验证是否已调用$state.go
方法以及使用什么参数。
在你问我之前...是的,但我想确保状态也会改变。好吧,你不需要这样做。
这是一个单元测试,这意味着您唯一关心的是测试此控制器,而不是其他任何内容,并且它的责任结束于仅调用该方法。之后发生的事情是其他人的责任,在这种情况下是ui-router,我敢打赌ui路由器经过了很好的测试:)
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从控制器返回后Ajax启动事件激发
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何在单击复选框后调用控制器方法
- 在控制器和数据对象之间同步数据
- 将Javascript数组发送到控制器ASP.NET MVC
- 角度控制器结构
- 如何在Jquery中发布后将值从视图返回到控制器
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 将值从html传递到AngularJS控制器
- 如何在用户更新AngularJs中的控制器时刷新$state
- 在$state.go之后在控制器之间传递数据
- $state.go() 不会在第一次单击 Button 时调用控制器
- 在一个控制器 ui 路由器中的所有 $state.go() 事件之前运行 check
- 单元测试控制器,在控制器中具有 $state.go 方法
- 模拟 AngularJS 控制器中的$state更改
- AngularJS在state onEnter函数中访问控制器的$scope
- $state.go在单个控制器中不起作用
- AngularJS使用子$state控制器向父's作用域中的对象添加属性