【问题标题】:Unit testing controller which has a $state.go method in controller单元测试控制器,在控制器中有 $state.go 方法
【发布时间】:2015-02-27 09:39:57
【问题描述】:

如何为具有 $state.go () 并且预期会重定向到该特定状态的函数编写单元测试?

           $scope.inviteMembers = (id)=> {
                $state.go('invite', {deptId: id});
                }

【问题讨论】:

  • 您是否已经对控制器的其余部分进行了单元测试?
  • @lukewestby .No.我写信只是为了检查状态

标签: javascript angularjs unit-testing jasmine karma-jasmine


【解决方案1】:

由于是单元测试,你只需要确保函数被调用,仅此而已。

类似的东西:

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-router 已经过良好测试:)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
相关资源
最近更新 更多