如何为具有$ state.go()的函数编写单元测试,并且该函数应该重定向到该特定的状态?
$scope.inviteMembers = (id)=> {
$state.go('invite', {deptId: id});
}
答案 0 :(得分:16)
由于它是一个单元测试,你只需要确保调用该函数,仅此而已。
这方面的事情:
it('should move to the invite page after inviting someone', function() {
spyOn($state, 'go');
$scope.inviteMembers(1);
expect($state.go).toHaveBeenCalledWith('invite', {deptId: 1});
});
所以这里的主要想法是监视go
的{{1}}方法,当我们调用该方法时,我们只需要验证已调用$state
方法并且什么参数。
在你回答之前......是的,但我想确保状态也发生变化。那么你不需要这样做。
这是一个单元测试,这意味着你唯一关心的是测试这个控制器而不是其他任何东西,它的责任就是调用那个方法。之后发生的事情是其他人的责任,在这种情况下是ui-router,我打赌ui-router经过了很好的测试:)