相关疑难解决方法(0)

如何放心验证数组内元素值的正确性

我正在尝试验证我的响应的某些属性,如放心教程中所示。

问题是,当测试数组内的属性时,我可以验证它们是否出现(如示例所示),但不能验证它们是否与元素的其他属性匹配。

为了澄清一下,假设我收到了教程的回复(添加了“奖品”)

{
"lotto":{
 "lottoId":5,
 "winning-numbers":[2,45,34,23,7,5,3],
 "winners":[{
   "winnerId":23,
   "prize":5000,
   "numbers":[2,45,34,23,3,5]
 },{
   "winnerId":54,
   "prize":100000,
   "numbers":[52,3,12,11,18,22]
 }]
}
}
Run Code Online (Sandbox Code Playgroud)

我可以验证 WinnerIds 为 23 和 54

expect().
         body("lotto.lottoId", equalTo(5)).
         body("lotto.winners.winnderId", hasItems(23, 54)).
when().
       get("/lotto");
Run Code Online (Sandbox Code Playgroud)

我可以验证奖金为 500 和 100000,但无法验证 WinnerId=23 的奖金=500,以及 WinnerId=54 的奖金=100000。响应将显示 WinnerId=23,奖品=100000,并且测试将通过。

我无法使用contains()因为数组中的元素可以按任何顺序出现,所以我需要使用containsInAnyOrder()

java testing hamcrest rest-assured

5
推荐指数
1
解决办法
7669
查看次数

使用jsonPath查找字符串

我正在尝试使用jsonPath和pick函数来确定是否需要根据当前域运行规则.我正在做的简化版本是:

    global 
{
    dataset shopscotchMerchants <- "https://s3.amazonaws.com/app-files/dev/merchantJson.json" cachable for 2 seconds
}

rule checkdataset is active
{
    select when pageview ".*" setting ()
    pre
    {
        merchantData = shopscotchMerchants.pick("$.merchants[?(@.merchant=='Telefora')]");
    }
    emit 
    <|
        console.log(merchantData);
    |>
}
Run Code Online (Sandbox Code Playgroud)

我期望的控制台输出是telefora对象,而是从json文件中获取所有三个对象.

如果不是商家=='Telefora'我使用merchantID == 16那么它的效果很好.我认为jsonPath也可以匹配字符串.虽然上面的例子没有搜索json的merchantDomain部分,但我遇到了同样的问题.

jsonpath krl

4
推荐指数
1
解决办法
3511
查看次数

标签 统计

hamcrest ×1

java ×1

jsonpath ×1

krl ×1

rest-assured ×1

testing ×1