我有一个API端点,它返回一个XML响应。我要测试的是该响应的一部分。
我有一个shop
模型,它引用另一个名为shop_contact
的表,可能是也可能不是。它包含3列,email
,phone
和fax
我嘲笑几家有虚假联系人的商店,我想测试一下XML响应<shop_contact>
是否至少包含这些标签(是<email>
,{{1} }}或<phone>
)并且它不是空的。
我试过了:
<fax>
但是我收到了这个错误:
hash = Hash.from_xml(response.body)
hash["shops"]["shop"].each do |shop|
expect(shop["shop_contact"]["email"] ||
shop["shop_contact"]["phone"] ||
shop["shop_contact"]["fax"]).to_not be_empty
end
有什么想法吗?
答案 0 :(得分:1)
.to_not be_empty
测试数组(或类似)是否包含元素。所以你可以这样做:
# construct an array
data = [
shop['shop_contact']['email'],
shop['shop_contact']['phone'],
shop['shop_contact']['fax']
].compact # compact removes `nil` elements
expect(data).to_not be_empty
或者,如果你想坚持||
s:
expect(shop['shop_contact']['email'] ||
shop['shop_contact']['phone'] ||
shop['shop_contact']['fax']).to be_truthy