2016-05-14 14 views
8

Voglio scrivere un test funzionale per la mia app, e voglio prendere in giro il mio servizio loginService, per accelerare i test. Non voglio prendere in giro $ http, ma il servizio che internamente lo chiama, ma non posso mettere una spia sulla funzione loginService.validate, che invia una query HTTP al server, ma non è caricata, dal momento che è nel driver, non nel test stesso. Ho anche dato un'occhiata a addMockModule ma non riesco a capire come usarlo. C'è un modo semplice per fare ciò che voglio? Ho guardato questi, ma non ha aiutato:Mock a service in E2E test in goniometro

Mocking and Stubbing with protractor

Mocking an angular service in Protractor

+0

Hai cercato: https://github.com/kbaltrinic/http-backend-proxy/wiki – rfodge

risposta

5

Prova questa.

describe('MockingHttp', function() { 
    beforeEach(function() { 
    browser.addMockModule('httpMocker', function() { 
     angular.module('httpMocker', ['ngMockE2E']) 
     .run(function($httpBackend) { 
     $httpBackend.whenGET(
      'http://jsonplaceholder.typicode.com/photos') 
      .respond([ 
      { 
      albumId: 1, 
      id: 1, 
      title: "accusamus beatae ad", 
      url: "http://placehold.it/600/92c952", 
      thumbnailUrl: "http://placekitten.com/g/200/300" 
      } 
      ]) 

     }) 
    }) 
    }); 

Leggi this per ulteriori chiarimenti. :)

+0

Un altro esempio utile (che non usa '$ httpBackend', né' ngMockE2E', ma vuole semplicemente per "sostituire" un servizio con il comportamento necessario per il test) [mostrato qui] (https://github.com/angular/protractor/issues/667) –

Problemi correlati