我使用量角器编写了一个导出模块。它内部定义了多个功能。 现在,我想在同一模块中的另一个函数内调用其中一个导出函数。 我的模块如下所示。
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 函数正确调用。在此之后,控件导航到链接中给出的页面。
答案 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上找到更多信息。