从另一个调用模块节点模块,而无需使用要求()无处不在(Call a node module from

2019-10-24 03:47发布

文件结构

01.spec.js - - -我称之为从量角器规格佣工这是罚款

describe('should click on element', function () {
    var helper1 = require('../../modules/helpers/helper1.js');

    it('should click and assert...', function() {
        helper1.clickOnCircle('Accounts');
    });
});

...但使用任何辅助功能从另一个帮手文件...

helpers1.js - - -我有权要求在每一个功能助手

module.exports = {
    clickOnCircle: clickOnCircle,
    clickOnBox   : clickOnBox
};

var helper2 = require('./helper2.js');   //node require doesn't hit something like this

function clickOnCircle(circleText) {
    var helper2 = require('./helper2.js');   //needed in every function
    helper2.doSomething(circleText);
}

function clickOnBox(boxText) {
    var helper2 = require('./helper2.js');   //needed in every function
    helper2.doSomething(boxText);
}

这几乎就像我希望帮助文件是在全球上市。 我搞砸周围使用的配置参数,但我还是最终不得不要求从每个功能的帮手。

Answer 1:

这里是我们如何使用我们的帮手和页面对象一个简单的例子。 我们有一个叫做helper.js文件和所有我们的页面对象在页面文件夹中。 我们正在使用的要求,所有的节点模块,以帮助我们包括我们所有的页面对象。

// Require all application pages
global.pages = require('require-all')(__dirname + '/../pages/');
global.EC = protractor.ExpectedConditions;

// Instantiate all pages in our applications, and make them globally available to the tests

//***** User/Nav Pages *****
global.loginPage                 = new pages.Navigation.LoginHomePage();
global.instructorHomePage        = new pages.Navigation.InstructorHomePage();
global.studentHomePage           = new pages.Navigation.StudentHomePage();
global.studentAccessPage         = new pages.Misc.StudentAccessPage();
global.selfEnrollPage            = new pages.User.SelfEnrollPage();
global.instructorNavPanelPage    = new pages.Navigation.InstructorNavPanelPage();
global.studentNavPanelPage       = new pages.Navigation.StudentNavPanelPage();
global.createInstructorPage      = new pages.Admin.CreateInstructorPage();
global.addUserPage               = new pages.User.AddUserPage();

那么这就是我们将如何有其中一个网页模板

var TemplatePage = function() {   
  //***** Buttons & Links *****   
  this.link = element(by.linkText('link'));   
  this.link2 = element(by.linkText('link2'));

  //***** Input Fields *****


  //***** Drop-Downs *****


  //***** Check Boxes *****


  //***** Page Elements *****


  //***** Helpers *****

  this.clickLink = function() {
    return link.click();   };

};

module.exports = TemplatePage;


Answer 2:

你可以在你的模块开始加载其他模块只有一次,然后从该模块中引用它们的任何地方。

这应该只是罚款:

// require in any other modules we need here
// modules are cached by the system
var helper2 = require('./helper2.js');

function clickOnCircle(circleText) {
    helper2.doSomething(circleText);
}

function clickOnBox(boxText) {
    helper2.doSomething(boxText);
}

module.exports = {
    clickOnCircle: clickOnCircle,
    clickOnBox   : clickOnBox
};


Answer 3:

有关使用继承什么,

例如:

function shapeModel() {

    var helper = require('./helper2.js');

function clickOnCircle() {
    return helper.doSomething(circleText);
  }

  function clickOnBox() {
    return helper.doSomething(boxText);
  }

  return {
    clickOnCircle: clickOnCircle(),
    clickOnBox   : clickOnBox()
  }
}

module.exports = shapeModel

这也使得一类为您的模块中使用。 这地方的exports在允许的页面的底部helper变量保持在作用域为全局,而不是你的外作用域module.exports



文章来源: Call a node module from another module without using require() everywhere