Ruby 测试散列是否包含特定的键,以及这些键的值是否不为零

Ruby 测试散列是否包含特定的键,以及这些键的值是否不为零,ruby,rspec,Ruby,Rspec,如何使用RSpec测试一个方法是否返回一个包含特定键的散列,并且这些键的值不是nil test_method.values_at("key1", "key2").should_not include(nil) 我会写: describe MyObject do describe "#my_method" do subject(:my_method) { MyObject.new.my_method } it { is_expected.to be_a_kind_of(Ha

如何使用RSpec测试一个方法是否返回一个包含特定键的散列,并且这些键的值不是nil

test_method.values_at("key1", "key2").should_not include(nil)
我会写:

describe MyObject do
  describe "#my_method" do
    subject(:my_method) { MyObject.new.my_method }

    it { is_expected.to be_a_kind_of(Hash) }
    specify { expect(my_method.keys).to include(:key1, :key2) }
    specify { expect(my_method.values).not_to include(nil) }
  end
end

可能会出现这样的情况:您必须使用倒逗号“key1”、“key2”中的键。否则它可能会抛出错误

如果散列的一个值实际上是
nil
,那么这将不起作用
hash.keys.should=~[:key1,:key2]
应该可以完成这个任务。