在Protractor测试用例中包含库

时间:2014-03-12 10:34:43

标签: javascript angularjs protractor

我想在量角器测试用例中包含一个模块/库,但是,只要我添加一行

var lib = require('./loginactions.js');

对量角器和相关对象的所有引用都将丢失。换句话说,如果我没有需求行,则找到“量角器”和“浏览器”变量并且测试运行正常(使用文件中的函数),但在添加该行之后,不再找到变量

这是一个最小的测试用例:

 var lib = require('./loginactions.js'); //problematic line
 describe('Login / Logout to Application',function(){
    var ptor;

    beforeEach(function(){
        ptor = protractor.getInstance(); //protractor reference lost
        browser.get('http://localhost:80'); //browser reference lost
    });

    it('should login and then logout successfully', function(){
       //Do things here
       lib.login(user, pass, ptor);
    });
});

我以这种方式导出函数:

module.exports.Login = Login;
module.exports.Logout = Logout;

//Params: ptor - protractor instance
function Login(user, pass, ptor)
{
    //stuff
}

function Logout(ptor)
{
    //stuff
}

我也想知道,这是否是将自己的库纳入项目的正确方法。所以我的问题是,如何将库正确地包含在量角器测试用例中?

1 个答案:

答案 0 :(得分:0)

为了回答我自己的问题,使用量角器作为库方法工作,这样就恢复了对量角器的引用。所以添加这两个需要解决我的问题:

var protractor = require('/path/to/protractor');
require('/path/to/protractor/jasminewd');

所以我的测试看起来类似于更新的代码 'no method expect' when using Protractor as a library问题。

但是,我不完全确定全局浏览器对象。根据{{​​3}},它是WebDriver对象的包装器,但是protractor实例也是如此。所以我决定用'ptor'替换所有'浏览器'变量,到目前为止没有任何抱怨。这可能会适得其反,但正如我所说,我不能完全确定在正常运行量角器时是否与全局量角器对象一起创建的全局浏览器对象而不是库。