量角器测试:有人可以告诉我我在使用 Require 时做错了什么吗?

Protractor testing: Can someone tell me what I'm doing wrong with Require?

我正在尝试将 Protractor 测试分解为可管理的文件。 有人可以告诉我我在使用 Require 时做错了什么吗?

这是一个例子:

变量: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

我相信这是一个简单的修复。我真的不知道我在做什么。

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"}

你可以阅读更多关于需求和模块的内容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 定义为一个模块并将其作为一个整体导出。 希望我有所帮助。