Tôi có hai băm h1
và h2
mà tôi muốn so sánh trong RSpec.Làm cách nào để so sánh hai băm trong RSpec?
Tôi muốn kiểm tra xem các phần tử của h1
có giống như h2
sau một số phép chuyển đổi mà chúng tôi sẽ gọi là f
. Tức là, tôi muốn xác minh rằng đối với mỗi khóa k
trong h1
, h1[k] == f(h2[k])
.
Ví dụ, nếu tất cả các giá trị trong h2
là hai lần lớn như các giá trị tương ứng trong h1
, sau đó tôi muốn kiểm tra xem cho mỗi phím k
trong h1, h2[k] == h1[k] * 2
.
Cách thích hợp để thực hiện điều này trong RSpec là gì? Hiện tại tôi làm:
h1 = ...
expect(
h2.all? { |k,v|
v == f(h1[k])
}
).to be true
nhưng điều đó có vẻ khó khăn.
Tôi sẽ tạo phương thức trợ giúp 'bằng? (Khác)' mà tính toán - từ đó, 'mong đợi (h2.equal? (H1)). Là đúng ' – onebree
Câu hỏi của bạn rất gây hiểu lầm. Bạn đang chuyển vai trò của 'h1' và' h2' trong lời giải thích của bạn và trong mã của bạn. – sawa
Ngoài ra, mô tả của bạn (cũng như mã) mô tả rằng khớp là một cách, tức là, không quan trọng nếu 'h2' trong văn bản giải thích có các phím khác với những gì' h1' có. Đây có phải là những gì bạn dự định không? – sawa