我们在几个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