Javascript 在控制器中具有$state.go方法的单元测试控制器
我如何为一个有$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
$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。您能不能也调查一下这件事。。