在量角器JS中将函数从一个文件读取到另一个文件

时间:2017-02-08 13:46:51

标签: javascript angularjs node.js protractor

我编写了一个包含许多函数的文件,我希望在各种E2E测试中使用这些函数。我一直试图测试这个,并找到了一些解决方案,但没有一个对我有用。

事情就是这样。

在我的TestingFunc.js文件中,我创建了以下内容:

var TestingFunc =  function() { 

this.login = function(Url) {
            browser.ignoreSynchronization = true;
            browser.get(Url);


            browser.wait(EC.elementToBeClickable(element(by.eeHook('login',null,null))), 300000);
            element(by.eeHook('login', null, null)).click();    
            element(by.eeHook('authenticationEmailField',null,null)).sendKeys(logins.International);

            element(by.name('password')).sendKeys(logins.password);
            element(by.eeHook('authenticationLoginButton',null,null)).click();  

            browser.wait(EC.elementToBeClickable(paymentFlow), 100000);

            paymentFlow.click();
            browser.wait(EC.elementToBeClickable(depositAmount), 7000);   

        };
};

我试图在下面阅读它:

var url = 'http://master.mrgreen.avengers.zone/en-US/casino';
var TestingFunc = require("C:/Users/davbor.3DB/MrGreen Google Drive/LetsTest/TestingFunc.js");

describe("The security application", function () {


 var test = new TestingFunc();

it("will login to the page", function () {
    test.login(url);
}); 

});

然而,每次我运行它时,我都会收到错误:

Failures:
1) The security application encountered a declaration exception
  Message:
    TypeError: TestingFunc is not a constructor
  Stack:
    TypeError: TestingFunc is not a constructor
        at Suite.<anonymous> (C:\Users\davbor.3DB\MrGreen Google Drive\LetsTest\Testing.js:6:17)

我不知道我错过了什么,因为我甚至要求内部开发人员查看它没有成功。

1 个答案:

答案 0 :(得分:3)

  

var TestingFunc = require(“C:/Users/davbor.3DB/MrGreen Google Drive / LetsTest / TestingFunc.js”);

1)你不应该使用完整路径。使用此文件的相对路径。

在您的Testing.js中,require应如下所示:

var TestingFunc = require("./TestingFunc.js");

2)你应该'导出'你的功能:

var TestingFunc =  function() { 

this.login = function(Url) {
        browser.ignoreSynchronization = true;
        browser.get(Url);


        browser.wait(EC.elementToBeClickable(element(by.eeHook('login',null,null))), 300000);
        element(by.eeHook('login', null, null)).click();    
        element(by.eeHook('authenticationEmailField',null,null)).sendKeys(logins.International);

        element(by.name('password')).sendKeys(logins.password);
        element(by.eeHook('authenticationLoginButton',null,null)).click();  

        browser.wait(EC.elementToBeClickable(paymentFlow), 100000);

        paymentFlow.click();
        browser.wait(EC.elementToBeClickable(depositAmount), 7000);   

    };
};
module.exports = TestingFunc;

在此处查看有关nodejs模块的更多信息: https://nodejs.org/api/modules.html