2016-10-14 10 views
0

私はディレクティブ内の特定のコードをテストするために$タイムアウトをフラッシュするディレクティブのジャスミンテストを行っています。アプリケーション内の別の時点で、私は次のように解決

$stateProvider 
    .state('home', { 
     url: '/home', 
     component: 'home', 
     resolve: { 
      myservice: "myservice", 
      myItems: function(myservice) { 
       return myservice.resource.query().$promise; 
      } 

     } 
    }) 

とUI-ルータの取り扱いナビゲーションを持っているディレクティブは、このホームコンポーネント(ディレクティブが部品の内部にネストされた)と同じ角度のモジュールです。

ディレクティブのテストが実行され、$ timeout.flush()が呼び出されるたびに、クエリのURLに「エラー:予期しない要求」が表示されます。これは、ディレクティブとそのコンポーネントを関連付けるべきではないとしても起こります。クイックフィックスは、修正するために$ httpBackendを追加するだけですが、これは起こってはいけません。追加されるものが増えるにつれて、問題が再現されると思います。

私はそれが要求を引き起こしている解決機能であることを確認しました。b)指示テストで$状態をチェックしましたが、空の文字列を返しました。それが助け場合は、次のようにホーム状態c)その

のようなこのコンポーネントまたは何かを参照するディレクティブのテストにはコードがありませんが、テストでセットアップコードは次のとおりです。オーケー

scope = $rootScope.$new(); 
var element = $compile('..../*doesnt include home component at all*/......')(scope); 
    scope.$digest(); 
    $timeout.flush(); 

答えて

0

.... 。後でhttps://github.com/angular-ui/ui-router/issues/212を読み終えたら、適切な解決策は次のとおりです。

beforeEach(module(function($urlRouterProvider) { 
    $urlRouterProvider.deferIntercept(); 
})) 

上記の問題は、$ urlRouterProvider.otherwise()がを指している状態で呼び出されたものです。ホームステートが実現されないようにすることを延期し、リソースコールをトリガーすることによる解決

関連する問題