2016-04-04 11 views
2

In meinem Winkelmesser-Test möchte ich auch überprüfen, dass die richtigen Ajax-Anrufe vorgenommen werden. Wenn ich zum Beispiel nach /chapters navigiere, würde ich gerne sicherstellen, dass es einen Ajax-Anruf zu /chapters/documents?page=1Winkelmesser: Test für bestimmte Ajax-Anrufe

gibt Ist es möglich, dies mit Winkelmesser zu tun?

Ich fand this Post mit einer interessanten Lösung, aber ich sehe noch nicht, wie ich das so verwenden kann, dass ich in meinem it(...) tatsächlich etwas testen kann. Beispielsweise. browser.addMockModule klingt sehr vielversprechend, aber wieder, was soll ich in meinem beforeEach tun und wie kann ich alles verifizieren. Hilfe wäre willkommen!

+1

Warum wollen Sie auf diese Weise testen? Warum behaupten Sie nicht gegen die Ergebnisse des Aufrufs, da dies ein Integrationstest ist. Das klingt nach etwas Besserem auf der Ebene der Einheit mit HTTPBackend als mit dem Winkelmesser. –

+0

Richtig, aber trotzdem wäre es schön, die von der Anwendung aufgerufenen Endpunkte zu validieren, um sicherzustellen, dass der richtige Endpunkt aufgerufen wird und keine unnötigen Aufrufe getätigt werden. –

Antwort

2

Sie könnten etwas wie das folgende versuchen. Fügen Sie ein Mock-Modul in Ihrem Test:

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'); 
    }); 
}); 

Dann können Sie schreiben Behauptungen in Ihrem Test wie folgt aus:

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