我們在幾個JS文件中對我們的AngularJS應用程序進行了幾次Protractor端到端測試,它們的工作效果非常好。但是,在整個測試過程中有很多重複的代碼,我們希望將其幹掉。如何在Protractor/AngularJS測試中重新使用代碼
例如,我們每次登錄時,都必須單擊文本元素,輸入用戶名和密碼,然後單擊回車。現在,每個JS文件都有自己的登錄函數副本,每次測試之前都會調用它。
將它們重構爲我們可以導入的模塊將是很好的。我一直在尋找幾個小時,但沒有找到一個好的解決方案。
我們該怎麼做?
我們在幾個JS文件中對我們的AngularJS應用程序進行了幾次Protractor端到端測試,它們的工作效果非常好。但是,在整個測試過程中有很多重複的代碼,我們希望將其幹掉。如何在Protractor/AngularJS測試中重新使用代碼
例如,我們每次登錄時,都必須單擊文本元素,輸入用戶名和密碼,然後單擊回車。現在,每個JS文件都有自己的登錄函數副本,每次測試之前都會調用它。
將它們重構爲我們可以導入的模塊將是很好的。我一直在尋找幾個小時,但沒有找到一個好的解決方案。
我們該怎麼做?
您可以創建模塊的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(...);
});
我們的團隊使用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();
});
});
}
確定登錄-傭工不應該是'module.exports.loginToPage =功能...' – boatcoder
燦你讓我們知道爲什麼你將'loginToPage'函數綁定到'exports'上? – Blaise