我们的AngularJS应用程序有几个Protractor端到端测试,分布在多个JS文件中,并且它们非常有效。但是,在这些测试中有很多重复的代码,我们希望能够优化它。
例如,每次登录时,我们都需要点击文本元素,输入用户名和密码,然后单击回车键。现在,每个JS文件都有自己的登录函数副本,该函数在每个测试之前调用。
将这些重复的部分重构为模块,然后进行导入会很好。我已经搜寻了数小时,但没有找到一个好的解决方案。
我们该如何做?
我们的AngularJS应用程序有几个Protractor端到端测试,分布在多个JS文件中,并且它们非常有效。但是,在这些测试中有很多重复的代码,我们希望能够优化它。
例如,每次登录时,我们都需要点击文本元素,输入用户名和密码,然后单击回车键。现在,每个JS文件都有自己的登录函数副本,该函数在每个测试之前调用。
将这些重复的部分重构为模块,然后进行导入会很好。我已经搜寻了数小时,但没有找到一个好的解决方案。
我们该如何做?
您可以创建 Node.js 模块,并将其包含在 Protractor 配置中。
login-helpers.js
exports.loginToPage = function () {
//nodejs code to login
};
protractor.conf.js
exports.config = {
//...
onPrepare: function () {
protractor.loginHelpers = require('./helpers/login-helpers.js');
}
//...
};
page.spec.js
it('should do smth', () => {
protractor.loginHelpers.loginToPage()
//expect(...).toBe(...);
});
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 = function...
吗? - boatcoderloginToPage
函数绑定到exports
上吗? - Blaise