verspotten Sie $ httpBackend in e2e-Winkeltests

Hat jemand eine Idee, wie man $ httpBackend in e2e-Winkeltests verspottet? Die Idee ist, XHR-Anforderungen zu blockieren, während Tests auf Travis-Ci ausgeführt werden. Ich verwende Karma, um Assets und Partials von meiner Rails-App, die auf Travis ausgeführt wird, zu vertreten. Ich möchte Abnahmetests ohne echte DB-Abfragen durchführen.

Hier ist ein Teil meiner Karma-Konfigurationsdatei:

...
files = [
  MOCHA,
  MOCHA_ADAPTER,

  'spec/javascripts/support/angular-scenario.js',
  ANGULAR_SCENARIO_ADAPTER,

  'spec/javascripts/support/angular-mocks.js',
  'spec/javascripts/e2e/**/*_spec.*'
];
...

proxies = {
  '/app': 'http://localhost:3000/',
  '/assets': 'http://localhost:3000/assets/'
};
...

Hier ist ein Teil meiner Spezifikationsdatei:

beforeEach(inject(function($injector){
  browser().navigateTo('/app');
}));

it('should do smth', inject(function($rootScope, $injector){
  input('<model name>').enter('smth');
  //this is the point where I want to stub real http query
  pause();
}));

Ich habe versucht, den $ httpBackend-Dienst über $ injector zu erhalten:

$injector.get('$httpBackend')

Dies ist jedoch nicht der Fall, der in iframe verwendet wird, in dem meine Tests ausgeführt werden.

Der nächste Versuch, den ich gemacht habe, war die Verwendung von angular.scenario.dsl. Hier ist der Code samle:

angular.scenario.dsl('mockHttpGet', function(){
  return function(path, fakeResponse){
    return this.addFutureAction("Mocking response", function($window, $document, done) {
      // I have access to window and document instances 
      // from iframe where my tests run here
      var $httpBackend =  $document.injector().get(['$httpBackend']);
      $httpBackend.expectGET(path).respond(fakeResponse)
      done(null);
    });
  };
});

Anwendungsbeispiel:

it('should do smth', inject(function($rootScope, $injector){
  mockHttpGet('<path>', { /* fake data */ });
  input('search.name').enter('mow');
  pause();
}));

Dies führt zu folgendem Fehler:

<$httpBackend listing>  has no method 'expectGET'

Zum jetzigen Zeitpunkt habe ich keine Ahnung, wie es weitergehen soll. Hat jemand versucht, so etwas zu tun, ist diese Art von Stubbing wirklich möglich?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage