2014-07-16 13 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(); 
     }); 
    }); 
} 
相关问题