量角器测试:有人可以告诉我,我做错了什么吗?

时间:2015-10-20 13:23:05

标签: angularjs jasmine automated-tests protractor pageobjects

我试图将我的Protractor测试分解为可管理的文件。 有人可以告诉我,我做错了什么吗?

以下是一个例子:

变量:C:/tests/variables/signInVariables.js

var emailAddress = element(by.model('loginData.userName'));
var password = element(by.model('loginData.password'));
var signInButton = element(by.css('[data-auto-field="SignIn"]'));

功能:C:/tests/functions/signInFunctions.js

var signInVariables = require ('../variables/signInVariables.js');

function signIn(a, b) {
    browser.get ('https://www.website.com');
    emailAddress.sendKeys(a);
    password.sendKeys(b);
    signInButton.click();
};

测试:C:/tests/protractor/conf.js

var signInFunctions = require ('../functions/signInFunctions.js');

it(' should sign in ', function() {
    signIn("someusername", "somepassword");
});

我跑了,这就是我得到的:

Failed: signIn is not defined

我确定这是一个简单的解决方法。我只是不知道自己在做什么。

2 个答案:

答案 0 :(得分:3)

您可以阅读有关require和模块here的更多信息,您的错误就是这样 signInVariables不是模块,没有exports对象可供使用。 你可以这样做:

exports.emailAddress = element(by.model('loginData.userName'));
exports.password = element(by.model('loginData.password'));
exports.signInButton = element(by.css('[data-auto-field="SignIn"]'));

或将signInVariables定义为模块并将其整体导出。 希望我帮忙。

答案 1 :(得分:2)

require并没有像你期待的那样工作。它不是简单地按照您使用它的方式内联所需的文件。 require正在寻找JSON文件或module.exports对象。这是一个简单的例子。

require_me.js

module.exports = {a: "foo", b: "bar"};

index.js

var imports = require('require_me.js');
console.log(imports); // Will produce {a: "foo", b: "bar"}