gpt4 book ai didi

Javascript 将链式函数包装在单个函数中

转载 作者:行者123 更新时间:2023-12-02 15:25:14 24 4
gpt4 key购买 nike

我正在使用 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)... 等?

最佳答案

你绝对可以。只需将函数作为参数传递给函数即可。您可以通过更改对象的原型(prototype)来定义对象的方法。因此,为了实现您想要的行为,您可以这样写:

// 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,以便可以链接它。

关于Javascript 将链式函数包装在单个函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33749411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com