单元测试控制器,在控制器中具有 $state.go 方法

Unit testing controller which has a $state.go method in controller

本文关键字:控制器 state 方法 go 单元测试      更新时间:2023-09-26

如何为具有 $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});
});

所以这里的主要思想是监视$statego方法,当我们调用该方法时,我们只需要验证是否已调用$state.go方法以及使用什么参数。

在你问我之前...是的,但我想确保状态也会改变。好吧,你不需要这样做。

这是一个单元测试,这意味着您唯一关心的是测试此控制器,而不是其他任何内容,并且它的责任结束于仅调用该方法。之后发生的事情是其他人的责任,在这种情况下是ui-router,我敢打赌ui路由器经过了很好的测试:)