簡體   English   中英

Javascript將鏈接的函數包裝在單個函數中

[英]Javascript wrapping chained functions in a single function

我正在使用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)...如何調用.findByXPath(xpath)...等?

你絕對可以。 只是將函數作為參數傳遞給函數。 您可以通過更改對象的原型來定義對象的方法。 因此,要實現所需的行為,可以這樣編寫:

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

如果要執行鏈接,則函數必須返回要在其上執行操作的“對象”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM