【发布时间】:2015-11-15 21:07:36
【问题描述】:
我正在尝试使用带有 gem Airborne 的 RSpec 来测试来自 API 的“人”对象的 JSON 响应中的字段值。
代码:
it 'GET list of people objects where gender = male' do
get "/people?gender=male"
expect_json('people.*', {gender: 'MALE'})
end
因此,如果我的测试使用此特定过滤器(性别)进行 API 调用,我希望只会拉回性别为男性的人。然而,这段代码失败了,因为每个“人”对象都有许多不同的键(:name、:age 等)。我只想测试性别,但我无法让它通过,因为 expect_json 期望人们的所有键都被写入测试。
我已经梳理了 Google/Airborne 文档,但无济于事: https://github.com/brooklynDev/airborne
【问题讨论】:
-
文档说你做得对。您是否仔细检查过响应是否正确? json 输出本身是什么?
-
所以每个 person 对象的 json 响应是: Person: { gender: "MALE", name: "John", age: 21 } (实际上还有很多很多键,但这只是一个例子)
-
已经仔细检查了响应。它列出了 JSON 中的所有键,并说它与预期不匹配,然后在“差异:”部分列出了我未包含在测试中的键
-
你得到的是一个人对象数组
people : [{person},{person}]还是很多人的对象?people: {{person},{person}}? -
人员对象数组 people
people : [{person},{person}]