量角器:无法在同一模块中调用导出的函数

时间:2016-11-24 05:18:10

标签: javascript protractor

我使用量角器编写了一个导出模块。它内部定义了多个功能。 现在,我想在同一模块中的另一个函数内调用其中一个导出函数。 我的模块如下所示。

module.exports = {
    read_page_number_data: function {
        // code here
    },
    read_page_data: function {
        this.read_page_number_data().then(function () {
            // Code here.
        });
    },
    check_link_present: function {
        // code here
    },
    click_link: function {
        this.check_link_present().then(function () {
            // Code here.
        });
    },
}

现在,当我在测试脚本中调用read_page_data函数时,我得到以下错误。

失败:this.read_page_number_data不是函数。

我已尝试过以下问题中给出的所有选项。仍然没有成功。

protractor calling an exported function within the same module

注意:在调用 read_page_data 函数之前,我正在调用 click_link 函数,该函数在内部调用 check_link_present 函数。但是这个调用工作正常, check_link_present 函数可以从 click_link 函数正确调用。在此之后,控件导航到链接中给出的页面。

2 个答案:

答案 0 :(得分:0)

为什么不尝试以下方式。这是页面对象模型测试框架的最佳实践之一。

var PageName = function(){
              this.firstMethod = function(){
                //logic
              };
              this.secodnMethod = function(){
                //logic
              };
  }

module.exports = new PageName();

答案 1 :(得分:0)

一种解决方案是将对象分配给特定于模块的变量。 e.g。

module.exports = myModule = {
    //...
}

然后,您可以使用myModule.read_page_number_data()等来调用模块中的函数。

您可以找到示例JSFiddle here

有关this上下文

的说明

要记住的一件事是this可以根据父函数的调用方式改变它的上下文,这可能是它为click_link而不是read_page_data工作的原因。 {1}}。

您可以在this关键字here上找到更多信息。

相关问题