2017-02-06 11 views
0

私はこの奇妙な問題に遭遇したときにテストコードを書いていました。 myModal.dismiss();の後に$rootScope.$digest();を実行すると、Possibly unhandled rejection: undefined thrownとなります。私は、角度ブートストラップライブラリのModalの単体テストを見て、彼らは$animateでいくつかのことをしていることに気付きました。多分それは関連しているでしょうか?角度ブートストラップ「おそらく未処理の拒否:未定義の投げ」

it('tests weird failure', function(){ 
    var myModal = this.$uibModal.open({ 
    template: '<div class="modalTwo"></div>', 
    size: "md" 
    }); 

    this.$rootScope.$digest(); 
    myModal.dismiss(); 
    this.$rootScope.$digest(); 
}); 

答えて

0

これは役立つかどうかはわかりませんが、私は$ uibModalの解雇に関連した作業テストを行っていましたが、新しいマシンでプロジェクト用にnpmをインストールしたとき、私はこのエラーの1つを見て始めました。私の問題は、私がテスト中のコードで約束を拒否したケースを処理していないということでした。奇妙なことに、テストはまだ私の古いマシン上で実行されていたので、私はちょっと掘り下げて(確かにトンではない)、カルマジャスミンのバージョンが2台のマシン(1.0.2と1.1.0) 。私はそれが私が1つのマシンでエラーを取得し、他のマシンでエラーを取得する理由だと思う。問題を再現するために、テスト対象

コード:

$confirm({ 
    text: 'Are you sure you want to do this?', 
    title: 'Are you sure?' 
}).then(
    function() { 
     $scope.model.things.pop(); 
    } 
); 

拒否約束のためにこのコードをテストするための仕様:テスト対象のコードにという第二の機能がないこと

scope.model.things = [{id: 1}, {id: 2}, {id: 3}]; 

deferred.reject(); 

expect(scope.model.things).toEqual([{id: 1}, {id: 2}]); 

をお知らせ$ confirm(角度確認ライブラリからのもの)が拒否された場合(この場合は、ユーザがポップアップでNoをクリックしたことを意味します)に呼び出されます。私のコードのこの小さな変更を加えることは、私のテストに合格することができ:

$confirm({ 
    text: 'Are you sure you want to do this?', 
    title: 'Are you sure?' 
}).then(
    function() { 
     $scope.model.things.pop(); 
    }, function() {} 
); 

ここでの唯一の違いは、私が拒否された約束を「ハンドル」には、空の機能を持っているということです。これが何らかの形で役立つことを願っています。

+0

他のいくつかのエラーが発生し、Angularを1.5.xから1.6.xにアップデートしたことがわかりました。それは私が持っていた他の問題を解決し、私はこれも同様に関連していると思う。 –

関連する問題