Wie Vergleiche ich zwei hashes in RSpec?

Habe ich zwei hashes h1 und h2 dass ich möchte, zu vergleichen, in RSpec.

Möchte ich überprüfen, dass die Elemente der h1 sind die gleichen wie h2 nach einiger transformation, die wir nennen f. Das heißt, ich möchte, um zu überprüfen, dass für jede Taste k im h1, h1[k] == f(h2[k]).

Zum Beispiel, wenn alle Werte in h2 sind doppelt so groß wie die entsprechenden Werte in h1 sind, dann möchte ich schauen, dass für jeden Schlüssel k im 1. Halbjahr h2[k] == h1[k] * 2.

Was ist der richtige Weg, dies zu tun in RSpec? Zurzeit mache ich:

h1 = ...
expect(
  h2.all? { |k,v|
    v == f(h1[k])
  }
).to be true

aber das scheint umständlich.

  • Ich würde eine helper-Methode equal?(other) hat die Kalkulation-von dort aus expect(h2.equal?(h1)).to be true
  • Deine Frage ist sehr irreführend. Sie wechseln die Rolle der h1 und h2 in Ihrer Erklärung und in Ihrem code.
  • Auch deine Beschreibung (und der code) beschreibt, dass die Abstimmung ist ein Weg, D. H., es spielt keine Rolle, ob h2 im Erklärungstext hat die Schlüssel andere als das, was h1 hat. Ist es das, was Sie beabsichtigen?
Schreibe einen Kommentar