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

Javascript 在控制器中具有$state.go方法的单元测试控制器,javascript,angularjs,unit-testing,jasmine,karma-jasmine,Javascript,Angularjs,Unit Testing,Jasmine,Karma Jasmine,我如何为一个有$state.go()的函数编写单元测试,该函数应该重定向到那个特定的状态 $scope.inviteMembers = (id)=> { $state.go('invite', {deptId: id}); } 因为这是一个单元测试,所以您只需要确保函数正在被调用,仅此而已 大致如下: it('should move to the invite page after inviting s

我如何为一个有$state.go()的函数编写单元测试,该函数应该重定向到那个特定的状态

           $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路由器和我打赌ui路由器经过了良好的测试:)

您的控制器的其余部分已经进行了单元测试了吗?@lukewestby。没有。我写这封信只是为了检查statesThanks@Jesus。您能不能也调查一下这件事。。