2016-04-01 32 views
21

Potrei usare qualche aiuto per trovare una soluzione per il mio problema. Ho bisogno di prendere in giro alcuni dati per la mia applicazione angular2 quando fa una richiesta a un'api, ho bisogno di fare qualcosa di simile:Goniometro, backock beffardo con angolare2 su richiesta API

$httpBackend.when('GET', '/userbookings/').respond(my json file data); 

Il problema è che tutto quello che posso trovare su google, utilizzando il $ httpBackend che è utilizzato per angularJS (angolare 1).

Qualcuno sa come posso farlo funzionare nel test E2E (l'applicazione è un'applicciazione angolare2)? Sto cercando di fare questo sia con goniometro o Nightwatch (ho provato entrambi i quadri)

test Spec:

describe('Protractor Mocking bookings for angular2 site', function() { 

var ngMockE2E = require('ng-mock-e2e'); 

var $httpBackend = ngMockE2E.$httpBackend; 

beforeEach(function() { 
    ngMockE2E.addMockModule(); 
    ngMockE2E.addAsDependencyForModule('myApp'); 
    ngMockE2E.embedScript('/bower_components/angular-mocks/angular-mocks.js'); 
}); 


afterEach(function() { 
    ngMockE2E.clearMockModules(); 
}); 

it('Inject mock data of bookings', function() { 

    var EC = protractor.ExpectedConditions; 
    var global = require('../bin/globals.js'); 

    // Bookings data in a json file which should be send as the response 
    var mockData = require('../testData.json'); 

    browser.ignoreSynchronization = false; 

    $httpBackend.when('GET', '/userbookings').respond(mockData); 

    browser.get(global.so.enLoggedIn); 

}); 

}); 

Questo test non funzionerà perché si sta usando qualche modo angular1. L'ho mostrato, così puoi vedere come appare il mio test.

Spero che qualcuno possa aiutarmi qui, perché è davvero difficile trovare qualcuno che funzioni con angular2.

+0

mi sento di raccomandare questo pacchetto https://github.com/atecarlos/protractor-http-mock. – finspin

+0

Lo hai provato con l'angolare 2 ?. L'ho già provato e l'ho guardato .. La descrizione di come funziona è difficile da capire. Forse sono solo io. – Mandersen

+0

È quello che stai cercando per qualcosa qui descritto? Non è davvero all'interno di un ambiente di test, ma non ci sarebbe alcun problema a trasferire. http://www.sitepoint.com/angular-2-mockbackend/ – zewa666

risposta

18

goniometro does not yet support adding mock modules for Angular 2 applications:

// TODO: support mock modules in Angular2. For now, error if someone 
// has tried to use one. 
if (self.mockModules_.length > 1) { 
    deferred.reject('Trying to load mock modules on an Angular2 app ' + 
     'is not yet supported.'); 
} 

E, Ho anche creato un problema di github per la TODO per attirare l'attenzione:

Questo, dal modo, significa anche che protractor-http-mock non funzionerà dal momento che si basa su addMockModuleinternally. Ho provato personalmente protractor-http-mock su un campione di applicazione Angular2, ottenuto:

non riuscita: Cercando di caricare i moduli finte su un app Angular2 non è ancora supportato.

Lo stesso vale per i pacchetti http-backend-proxy e httpbackend.


immagino, mentre la questione non è stata ancora fissata, si dovrebbe considerare sparare un procura che avrebbe agito come una specie di un "finto esterno" al tuo backend API, non hanno fatto che personalmente , vedere più al:

+0

Ottima risposta, sai se è stato implementato? Sto sempre alla ricerca di come deridere backend con test e2e: -/ – mfrachet

+0

@Skahrz grazie, purtroppo, sembra che sia non è ancora supportato – alecxe

+0

Non riesco a trovare altre risorse ma questa domanda su SO. Sto affrontando lo stesso problema, e mi chiedo se non ci sia ancora supporto per i finti back-end di Angular 2.0.2 e Protractor 4.0. 9? – CharlyDelta

0

quanto non v'è alcun supporto per mo moduli cked in angular 2, ho realizzato un piccolo plug-in per goniometro che consente una richiesta simulata di ajax. Puoi trovarlo qui: https://github.com/krisboit/protractor-xmlhttprequest-mock

Non c'è ancora una documentazione, ma puoi trovare dei test di esempio. Spero che ti aiuti.

+0

Ehi, non ero in grado di eseguire questo esempio.Tuttavia la soluzione rapida che mi ha aiutato è stata la sostituzione di 'browser.executeScript' con' browser.driver.executeScript' in 'index.js' – Andurit

3

finito per usare json-server quanto non v'è ancora alcun supporto di addMockModule per Angolare 2

-1

Personalmente, ho usato il plugin ng-apimock per prendere in giro tutti i network chiamate al backend con un proxy.

Funziona molto bene ed è semplice da configurare. Basta seguire la configurazione per l'applicazione angolare here