2014-07-16 2 views
9

Abbiamo diversi test end-to-end del goniometro per la nostra app AngularJS in diversi file JS e funzionano alla grande. Ma c'è un sacco di codice duplicato durante i test e ci piacerebbe ASCIUGARLA.Come riutilizzare il codice nel goniometro/AngularJS Testing

Ad esempio, ogni volta che effettuiamo l'accesso, dobbiamo fare clic sugli elementi di testo, digitare il nome utente e la password, quindi fare clic su Invio. E proprio adesso ogni singolo file JS ha la sua copia della funzione di login che viene chiamata prima di ogni test.

Sarebbe bello refactoring quelli fuori in moduli che possiamo quindi importare. Ho cercato ore, ma non ho trovato una buona soluzione.

Come dovremmo fare?

risposta

21

È possibile creare moduli nodejs e includerli nella configurazione goniometro

d'accesso-helpers.js

exports.loginToPage = function() { 
    //nodejs code to login 
}; 

protractor.conf.js

exports.config = { 
    //... 
    onPrepare: function() { 
     protractor.loginHelpers = require('./helpers/login-helpers.js'); 
    } 
    //... 
}; 

pagina. spec.js

it('should do smth',() => { 
    protractor.loginHelpers.loginToPage() 

    //expect(...).toBe(...); 
}); 
+4

Sei sicuro accesso-aiutanti non dovrebbe essere 'module.exports.loginToPage = funzione ...' – boatcoder

+0

Can ci fai sapere perché leghi la funzione 'loginToPage' a' exports'? – Blaise

1

Il nostro team utilizza Orchid-js con Jasmine e Goniometro, è progettato per fare esattamente questo.

Il test

Describe('Login user',require('../login.js'))("username","password"); 

login.js

module.exports = function(username,password){ 
    describe('login the user',function(){ 
     it('should login the user',function(){ 
      element(by.id('usernameField')).sendKeys(username); 
      element(by.id('passwordField')).sendKeys(password); 
      element(by.id('loginButton')).click(); 
     }); 
    }); 
}