2014-07-16 9 views
9

Mamy kilka testów końcowych kątomierza dla naszej aplikacji AngularJS w kilku plikach JS i działają one świetnie. Ale podczas testów jest dużo powielonego kodu i chcielibyśmy to SUCHY.Jak ponownie użyć kodu w Kątomierzu/AngularJS Testowanie

Na przykład za każdym razem, gdy się logujemy, musimy kliknąć elementy tekstowe, wpisać nazwę użytkownika i hasło, a następnie kliknąć enter. I właśnie teraz każdy pojedynczy plik JS ma własną kopię funkcji logowania, która jest wywoływana przed każdym testem.

Byłoby miło przekształcić je w moduły, które następnie możemy zaimportować. Szukałem wiele godzin, ale nie znalazłem dobrego rozwiązania.

Jak powinniśmy to zrobić?

Odpowiedz

21

Można tworzyć nodejs modułów i uwzględnić je w konfiguracji kątomierz

login-helpers.js

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

protractor.conf.js

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

strona. spec.js

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

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

Czy na pewno login-pomocnicy nie powinno być 'module.exports.loginToPage = function ...' – boatcoder

+0

Can dasz nam znać, dlaczego wiążesz funkcję 'loginToPage' z' export'? – Blaise

1

Nasz zespół używa Orchid-js z jaśminem i kątomierzem, zaprojektowano go do tego właśnie.

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(); 
     }); 
    }); 
} 
Powiązane problemy