javascript - Controller 中有 $state.go 方法的单元测试 Controller

标签 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 someone', function() {
  spyOn($state, 'go');

  $scope.inviteMembers(1);

  expect($state.go).toHaveBeenCalledWith('invite', {deptId: 1});
});

所以这里的主要思想是监视$statego方法,当我们调用该方法时,我们只需要验证$ state.go 方法已被调用,参数是什么。

在你问我之前......是的,但我想确保状态也发生变化。好吧,您不需要这样做。

这是一个单元测试,这意味着您唯一关心的是测试这个 Controller 而不是其他任何东西,并且它的职责结束只是调用该方法。之后发生的事情是其他人的责任,在本例中是 ui-router,我敢打赌 ui-router 已经过良好测试:)

关于javascript - Controller 中有 $state.go 方法的单元测试 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27718743/

相关文章:

javascript - 通过innerHTML和document.createElement创建HTML有什么区别?

javascript - window.setInterval 不适用于 angularjs

javascript - angularjs - php - mysql之间的mange时间格式

unit-testing - R 语言中单元测试支持的现状如何

unit-testing - 如何在Visual Studio 2017中禁用测试发现?

python - Django TestCase 测试顺序

javascript - 如何检索 AMD'ized Dojo 的 XHR 响应代码(+时间戳)?

javascript - AngularJS 在数据集中显示最大重现属性

javascript - 在其他非 Angular 应用程序的 iframe 中进行 Protractor 测试?

javascript - 确定函数是否作为 native 浏览器事件的结果调用