5

Ho bisogno di organizzare test unitari e test end-to-end per la mia applicazione per pagina singola JavaScript. Sto usando AngularJS Goniometro/Cetriolo per il test e2e e Chai per i test unitari.Come organizzare i test unitari e i test e2e in AngularJS?

Ho test di e2e e unità in due cartelle diverse (cartella unit e e2e) e attualmente non sto sfruttando il patterm di design page object. I file non sono strutturati e non condividono molto codice, quindi mi sto ripetendo molte volte.

riconosco questo approccio non scala fino

C'è una buona pratica per riorganizzare le prove in modo tale che scrivo la minor quantità di codice, mantenendo il codice di prova DRY?

risposta

6

Prima di tutto, si dovrebbe assolutamente passare ad usare il modello di pagina Oggetto e tenere gli oggetti della pagina in una directory separata - penso si consiglia di chiamare il directory po.

Ecco un esempio per voi, la struttura del progetto al momento non abbiamo:

$ cd e2e 
$ tree -L 1 
. 
├── config 
├── db 
├── helpers 
├── mocks 
├── po 
└── specs 

config è directory speciale dove teniamo i nostri protractor configurazioni - ci potrebbero essere molteplici configurazioni - per esempio, per il test locale e per test su, per esempio, .

helpers è, in pratica, la nostra directory "libs"/"utils". Manteniamo abbinamenti personalizzati di gelsomino, moduli aggiuntivi "helper" con funzioni di supporto. Inoltre, abbiamo i moduli localStorage e sessionStorage che sono involucri convenienti intorno agli oggetti window.localStorage e window.sessionStorage.

mocks è una directory in cui manteniamo protractor-http-mock mocks.

po è una directory in cui vengono definiti gli oggetti della pagina. Ogni oggetto della pagina in un file separato.

specs è dove tutte le nostre specifiche vivono - sono organizzate in sottodirectory logicamente.


Alcuni dei helpers librerie sono made globally available via global, ad esempio:

onPrepare: function() { 
    global.helpers = require("../helpers/helpers.js"); 
    // ... 
}, 

Inoltre, per rendere l'aiutanti e po importazione più conveniente e di evitare l'attraversamento delle directory nella struttura e per gestire meglio il nestedness , abbiamo passati a usare requirePO e requireHelper funzione di supporto suggerito da @ Michael Radionov, vediamo:

Mi piace molto anche l'idea, proposta da @finspin, di creare un pacchetto nodo da ogni oggetto Page.

+0

avete qualche esempio di oggetto pagina? –

+0

@GianlucaGhettini yup, fondamentalmente seguiamo ciò che è suggerito qui: https://github.com/angular/protractor/blob/master/docs/page-objects.md. – alecxe

+0

ha senso avere qualcosa come gli oggetti di pagina anche per i test di unità? – ganqqwerty

Problemi correlati