如何在不使用 .items 关键字的情况下重做 rspec json 规范

How to rework rspec json spec without using .items keyword

任何人都可以告诉我编写此 rspec 规范的更新方法吗?它使用已弃用的关键字 "items",我不知道如何正确地使用它。当我包含匹配器 gem 时,我会遇到要使用哪个 rspec 版本的冲突,所以我只想避免一起使用它。

这是计算我在创建 4 时在索引中看到的课程数的规范:

  expect(courses_response[:name]).to have(4).items

我正在匹配的示例字符串是:

{:courses=>[{:courses=>{:id=>1, :name=>"Wilford Rolfson"}}, {:courses=>{:id=>2, :name=>"Mabel Jacobi"}}, {:courses=>{:id=>3, :name=>"Madison Beahan"}}, {:courses=>{:id=>4, :name=>"Miles Corwin"}}]}

我试过:

expect(courses_response.length).to eq(4)

生成“1”而不是“4”

这三个产量为零:

expect(courses_response[:name]).to eq(4)
expect(courses_response[:id]).to eq(4)
expect(courses_response[:row]).to eq(4)

感谢您的帮助!

如果我理解正确的话,因为你返回的对象是一个带有单个键(:courses)和值(包含课程的数组)的散列,你需要像这样检查该数组的长度:

expect(courses_response[:courses].length).to eq(4)

这是假设:

courses_response = {:courses=>[{:courses=>{:id=>1, :name=>"Wilford Rolfson"}}, {:courses=>{:id=>2, :name=>"Mabel Jacobi"}}, {:courses=>{:id=>3, :name=>"Madison Beahan"}}, {:courses=>{:id=>4, :name=>"Miles Corwin"}}]}