如何为具有 $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
方法已被调用,参数是什么。
在你问我之前......是的,但我想确保状态也发生变化。好吧,您不需要这样做。
这是一个单元测试,这意味着您唯一关心的是测试这个 Controller 而不是其他任何东西,并且它的职责结束只是调用该方法。之后发生的事情是其他人的责任,在本例中是 ui-router,我敢打赌 ui-router 已经过良好测试:)
关于javascript - Controller 中有 $state.go 方法的单元测试 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27718743/