簡體   English   中英

重試直到 response.results[-1].trans.id.includes('TransactionID')

[英]Retry until response.results[-1].trans.id.includes('TransactionID')

抱歉,如果之前有人回答過這個問題,我今天大部分時間都在尋找並發現了一些類似的問題,但沒有解決我的具體問題。

我正在使用“TransactionID”發布到 TransactionAPI-> 休眠線程 10 分鍾(因為這確保事務在下一步中發布)-> 調用讀取 api

Then match response.results[*].trans.id contains TransactionID

這目前有效,但睡眠不是很好......我想充分利用空手道。 [*] 是因為新的 TransactionID 出現在返回的數組響應的最終索引中。 所以它第一次調用 readAPI 它得到一個 [5] 的數組,新的 TransactionID 將出現在 [6] 中(我不知道如何讓它得到 array.length + 1 並等待那個出現)

閱讀此處的回復空手道框架重試,直到無法按預期工作,我嘗試了一些內部鏈接:

And retry until response.results[-1].trans.id.includes('TransactionID')
And retry until response.results[(@.length-1)].trans.id.includes('TransactionID')

這些返回錯誤:

org.graalvm.polyglot.PolyglotException: SyntaxError: Unnamed:1:18 Expected an operand but found error

我嘗試了上面鏈接中提到的在線 javascript function,但也無法正常工作。

Javascript function 提到:

* def isValid = function(x){ return karate.match(x, { tokens: '##[_ > 0]' }).pass }
# ...
And retry until isValid(response)

所以索引到-1將不起作用,因為那是 JsonPath 而不是 JavaScript。

嘗試這個:

# set this by doing a call before if needed
* def prevLength = response.length
* def isValid = function(x){ return x.length > prevLength }
# ...
* retry until isValid(response)

我的猜測是,這足以實現您想要的。

暫無
暫無

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

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