Un RSpec2 matcher pour la mise en correspondance des Hachages existent?

Note pour les futurs lecteurs: pensez à RSpec ne pas tenir compte de votre Hachages de l'égalité? On peut être un OrderedHash, mais de l'ordinaire RSpec de sortie, vous ne pouvez pas dire. C'était le problème qui a motivé ce post.

Question d'origine:

Supposons que j'ai un spec où je veux tester une méthode génère le Hachage.

it 'should generate the Hash correctly' do
  expected = {:foo => 1, 'baz' => 2}
  subject.some_method_that_should_generate_the_hash.should == expected
end

Cette échoue souvent, parce que les différents Hachages avec les mêmes paires clé-valeur peut retourner leurs paires dans un autre commandés. Résultats ressemblent:

Failure/Error: subject.some_method_that_should_generate_the_hash.should == expected
expected: {:foo => 1, 'baz' => 2},
     got: {'baz' => 2, :foo => 1}

Pour les tableaux, c'est résolu en utilisant l' =~ opérateur. Toutefois, cela ne fonctionne pas pour les tables de hachage. Pour l'instant, j'ai eu recours à

it 'should generate the Hash correctly' do
  expected = {:foo => 1, 'baz' => 2}
  subject.some_method_that_should_generate_the_hash.each {|k,v|
    v.should == expected[k]
  }
end

mais qui semble inutilement verbeux. J'attends qu'il y ait une solution évidente pour cette. Suis-je surplombant quelque chose dans les docs ou ne pas RSpec avoir un bon Comparateur pour les sans ordre de Hachage de l'égalité?

OriginalL'auteur Confusion | 2011-01-18