如何使用RSpec检查XML/JSON中是否存在属性?

Zhe*_*man 0 xml json rspec ruby-on-rails

我正在寻找检查XML或JSON响应中是否存在属性的正确方法.我不关心值是否为空,空或任何其他值,事实上,我的响应可能包含此特定属性的3个状态:

  • 根本不存在
  • 现在,但价值是 nil
  • 现在和价值是一个 datetime

因此,我需要一些方法来统一和简化所有这些状态(因为所有这些状态在此特定测试中都有效)并且只询问是否存在属性(last_visit_at).
我可以做同样的测试是否为零,即使用JSON:

JSON.parse(response.body).first["last_visit_at"].should_not be_nil
JSON.parse(response.body).first["last_visit_at"].should be_nil
Run Code Online (Sandbox Code Playgroud)

当值为nil时,这不起作用,显然(nil不响应#exist?或#exists?):

JSON.parse(response.body).first["last_visit_at"].should exist
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,它可能对JSON和XML响应都有效吗?谢谢.

gay*_*vat 6

试试这个

JSON.parse(response.body).first.keys.include?("last_visit_at").should be_true
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`... keys.should include('last_visit_at')`. (3认同)