用于单元测试的存根`window.location.reload` - "你的一些测试完成了整页重新加载!"

时间:2017-12-18 21:23:20

标签: javascript angularjs unit-testing karma-runner

我在控制器中有这个:

   $scope.foo = function(){
      return RolesService.remove({
        data: role
      })
      .then(function (v) {
        if (!(v && v.cdtError)) {
          $window.location.reload();
        }
      });
    }

$window被注入控制器

然后在我的单元测试中:

 let $window = {location: {reload: sinon.spy()}};

  module(function ($provide) {
    $provide.value('$window', $window);
    $window.onbeforeunload = sinon.spy();
  });

上面的存根似乎没有做任何事情,因为我仍然得到这个错误:

  

您的部分测试会重新加载整页!

如何将window.location.reload存根以便不会发生这种情况?

我在Karma Github问题跟踪器上看到了一些内容,但我无法找到答案。

1 个答案:

答案 0 :(得分:1)

这似乎可以解决问题:

beforeEach(function(){
    angular.mock.module('app', function ($provide) {
      let $window = {location: {reload: sinon.spy()}};
      $provide.value('$window', $window);
      $window.onbeforeunload = sinon.spy();
    });
  });