RSpec匹配响应

时间:2019-07-17 16:57:26

标签: ruby-on-rails rspec-rails

我正在使用Ruby on Rails 5和Rspec。

我的测试就像

expect(json_response['data']['body']).to match(/'["can't be blank"]'/)

我遇到错误

expected ["can't be blank"] to match /'["can't be blank"]'/

我想知道如何解决它?希望一切都清楚。

2 个答案:

答案 0 :(得分:1)

尝试使用match_array助手方法。

expect(json_response['data']['body']).to match_array(["can't be blank"])

答案 1 :(得分:0)

读取测试失败后,JSON响应将返回一个包含字符串的数组:["can't be blank"]。似乎是直接测试相等性的好用例:

expect(json_response['data']['body']).to eq(["can't be blank"])

match_array可以使用,但它“忽略了实际数组和预期数组之间的顺序差异”。作为仅包含一项的数组,此处不需要该功能。

contains_exactly/match_array docs