RSpec partial match against a nested hash

With rspec 3.6.0, this works for me:

expect(subject).to match(a_hash_including(key: value))

You are able to use and nest the hash_including method for these matchers.

Using your example, you can rewrite your test code to look like:

expect(response_json).to include(hash_including({
  employee: hash_including(jobs_count: 0)
}))

(or if response_json is a single object, replace include with match)

This will also work when dealing with .with constraints, for example:

expect(object).to receive(:method).with(hash_including(some: 'value'))

Tags:

Rspec