2017-12-18 40 views
1

私はコントローラでこれを持っている:単体テストのために `window.location.reload`をスタブします。 - あなたのテストの中には、全面的にページをリロードしたものがあります。

$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(); 
    }); 

上記スタブは何もしていないようですなぜなら、私はまだこのエラーが発生するからです。

Some of your tests did a full page reload!

window.location.reloadをスタブするとどうなりますか?

私はKarma Github号トラッカーでこれについていくつかの情報を見ていますが、答えが見つかりません。

+0

は、多分私は、間違った場所に')( 'モジュールを呼び出すカム? –

答えて

1

これはトリックを行うように見えた:私は `beforeEach`フックであることを置く必要があり

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