我正在使用intern进行一些javascript功能测试,并且希望开始将我的测试代码抽象出一些,以使其更加可重用。我不确定这是否可能,但我正在努力实现以下目标-
我的原始代码有以下格式-
this.remote.get(URL).setFindTimeout(5000).end()
.findByXpath(xpath).click().type('XXX').end().
.findByXpath(xpath).click().type('YYY').end()
.findByCSSSelector(css).click().doSelectBoxStuff().end() //and so on...其中每一行可能是不同类型输入字段的输入。当进入这些不同的输入类型时,我试图将这些功能抽象到它们自己的函数中,比如-
this.remote.get(URL).setFindTimeout(5000).end()
.enterTextBox('XXX')
.enterTextBox('YYY')
.enterSelectBox('ZZZ')
function enterTextBox(val){
//execute .findByXpath(xpath).click().type(val).end()
}
function enterSelectBox(val){
//execute .findByCSSSelector(css).click().doSelectBoxStuff().end()
}这样的事有可能吗?如果是这样的话,在我的两个新函数中,什么叫.findByXPath(xpath)...等?
发布于 2015-11-17 04:58:00
你绝对可以。只需将函数作为参数传递给函数。您可以通过更改对象原型来定义对象的方法。因此,为了达到你想要的行为,你可以这样写:
// Ideally, replace this.remote.get(URL) with a base instance of the object
this.remote.get(URL).prototype.enterTextBox = function() {
return this.findByXpath(xpath).click().type(val).end()
}
this.remote.get(URL).setFindTimeout(5000).end()
.enterTextBox('XXX')等等,关键是返回obj,这样它就可以被链接起来了。
发布于 2015-11-17 04:57:29
如果您想要执行链接,那么您的函数必须返回正在执行操作的“对象”。
https://stackoverflow.com/questions/33749411
复制相似问题