gpt4 book ai didi

Ruby Airbone 阵列测试未按预期工作

转载 作者:行者123 更新时间:2023-11-28 21:18:18 25 4
gpt4 key购买 nike

我有下面的json

{
"menu": {
"sections": [
{
"type": 4,
"frames": [
{
"itens": []
}
],
"order": 0
},
{
"type": 4,
"frames": [
{
"itens": [
{
"id": "1719016",
"type": 0,
"free": false
}
]
}
],
"order": 1
}
]
}
}

下面的测试可能会检查数组 itens 中的所有 json itens 是否具有 ID 属性:

expect_json_keys('menu.sections.0.frames.*.itens.*', :id)

问题是这个测试运行正常。但应该会失败。

只有当我改变我的期望时,我的测试才会失败:

expect_json_keys('menu.sections.0.frames.*.itens.0', :id)

为什么这个测试在使用 itens.* 时会成功而不是失败

最佳答案

我重现了你的问题并尝试调试了一下。

我是第一次看到这个机载 gem (所以对以下内容持保留态度),但我认为问题隐藏在机载实现本身中,在这里,更准确地说:https://github.com/brooklynDev/airborne/blob/master/lib/airborne/path_matcher.rb#L82

此行旨在为匹配通配符段的每个项目运行期望 block (在这种特殊情况下为 this one),但对于空数组,它什么也不做。没有期望 - 没有失败。

所以这不是您的测试代码有问题,而是关于 gem 本身。作为一种解决方法,您可以尝试 smth。像下面这样:

expect_json_types('menu.sections.0.frames.*.itens', :array_of_objects) # <= add this
expect_json_keys('menu.sections.0.frames.*.itens.*', :id)

例如在测试值本身之前测试值的类型 - 在这种情况下,它失败了 Expected array_of_objects got Array instead

关于Ruby Airbone 阵列测试未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55053079/

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