2014-07-16 55 views
9

我們在幾個JS文件中對我們的AngularJS應用程序進行了幾次Protractor端到端測試,它們的工作效果非常好。但是,在整個測試過程中有很多重複的代碼,我們希望將其幹掉。如何在Protractor/AngularJS測試中重新使用代碼

例如,我們每次登錄時,都必須單擊文本元素,輸入用戶名和密碼,然後單擊回車。現在,每個JS文件都有自己的登錄函數副本,每次測試之前都會調用它。

將它們重構爲我們可以導入的模塊將是很好的。我一直在尋找幾個小時,但沒有找到一個好的解決方案。

我們該怎麼做?

回答

21

您可以創建模塊的NodeJS和包括他們在量角器配置

登錄-helpers.js

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

protractor.conf.js

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

頁。 spec.js

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

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

確定登錄-傭工不應該是'module.exports.loginToPage =功能...' – boatcoder

+0

燦你讓我們知道爲什麼你將'loginToPage'函數綁定到'exports'上? – Blaise

1

我們的團隊使用Orchid-js與茉莉花和量角器,它的目的是做到這一點。

您的測試

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(); 
     }); 
    }); 
} 
相關問題