2016-04-04 9 views
2

私の分度器テストでは、正しいajax呼び出しが行われていることを確認したいと思います。たとえば、/chaptersに移動すると、/chapters/documents?page=1への電話があったことを確認したいと思います。分度器:特定のajax呼び出しのテスト

分度器でこれを行うことは可能ですか?

私はthisのポストをいくつか興味深い解決策で見つけましたが、私はそれを私の中でどのように使うことができるかわかりません。it(...)私は実際に何かをテストすることができます。例えば。 browser.addMockModuleは非常に有望ですが、また、私はbeforeEachで何をすればいいですか、どのように何かを確認することができます。助けていただければ幸いです!

+1

あなたがこの方法でテストしたいのはなぜ?これは統合テストなので、呼び出しの結果に対してアサートしないでください。これは分裂器よりもHTTPBackendの方がユニットレベルでうまくいくと思われます。 –

+0

本当ですが、正しいエンドポイントが呼び出され、不要な呼び出しが行われていないことを確認するために、アプリケーションによって呼び出されたエンドポイントを検証するといいでしょう。 –

答えて

2

次のようなものを試すことができます。あなたのテストでモックモジュールを追加します。

browser.addMockModule('httpInterceptor', function() { 
    angular.module('httpInterceptor', []).factory('httpRequestInterceptor',function ($q) { 
    return { 
     request: function (request) { 
     window.handledRequests = window.handledRequests || []; 

     window.handledRequests.push({ 
      url: request.url, 
      method: request.method, 
      params: request.params, 
      data: JSON.stringify(request.data) 
     }); 

     return request || $q.when(request); 
     } 
    }; 
    }).config(function ($httpProvider) { 
    $httpProvider.interceptors.push('httpInterceptor'); 
    }); 
}); 

その後、あなたはこのようなあなたのテストでアサーションを書くことができます。

browser.controlFlow().execute(function() { 
    browser.executeScript(function() { 
     return window.handledRequests; 
    }).then(function (handledRequests) { 
     // assert content of handledRequests 
    }); 
});