Я нахожусь в ситуации, когда пишу Rspe c ожидания, которые выглядят так:
expect(result['data']['register']['registered']).to be(false), result.inspect
Проблема в том, что чаще всего ошибка, которую я получаю, когда что-то идет не так:
undefined method `[]' for nil:NilClass
Я нашел этот лучший способ написать это:
expect(result.dig('data', 'register', 'registered')).to be(false), result.inspect
, который по крайней мере показывает результат result.inspect
, но я думаю, что было бы что-то лучше, например:
expect(result).to dig('data', 'register', 'registered').and be(false), result.inspect
Я думал об использовании hash_including
, но не мог заставить его работать. Я попытался:
expect(result).to eq(hash_including("data" => {"register" => {'registered' => be(false)}}))
или
expect(result).to eq(hash_including("data" => {"register" => {'registered' => false}}))
или
expect(result).to eq(hash_including("data" => hash_including("register" => hash_including('registered' => be(false)))))
или
expect(result).to eq(hash_including("data" => hash_including("register" => hash_including('registered' => false))))
или includes
, выполнив:
expect(result).to include('data' => {'register' => {'registered' => false}})
или
expect(result['data']).to include('register' => {'registered' => false})
Ничто из этого не работает, а второе ужасно многословно ... даже первый, на мой взгляд, не так хорош, как dig
, но я отвлекся .