Ho simulato l'API REST utilizzando la combinazione di cucumberjs, phantomjs con l'impostazione del server proxy su 127.0.0.1 e l'aggancio di un processo node.js con http-proxy
e nock
lì. CucumberJS non è la parte importante, puoi scrivere lo scenario di test in qualsiasi modo, il resto è la chiave della simulazione. È in grado di simulare semplicemente match-request-return-data, ma puoi anche filtrare per pattern e richiamare la funzione callback per produrre una risposta, in modo da poter simulare a qualsiasi livello di granularità di cui hai bisogno (in estremo termina con un server demo completo, ma puoi farlo in modo incrementale).
Funziona bene:
- Phantomjs richiede un URI.
- La richiesta va al server proxy su 127.0.0.1:port.
- Il tuo processo node.js lo inoltra in modo trasparente usando
http-proxy
. Quindi qualsiasi caricamento "normale" (pagine, immagini) funziona.
- Se scegli di intercettare alcune richieste (API, principalmente) utilizzi
nock
per questo.
Nel mio scenario, l'ho combinato con i test di cetriolo js nello stesso processo, quindi è andato come:
- Esecuzioni di test.
- Imposta
nock
HTTP mocking per lo scenario testato.
- Carica una pagina in phantomjs tramite il protocollo Selenium.
Il resto è come mostrato in precedenza in questo paragrafo (cioè, è un po 'un ciclo, io come runner di test istruisco phantomjs per caricare una pagina, che inoltra tutte le richieste a me, e le inoltro alla rete oppure intercettali se è l'API testata.