का उपयोग कर सामग्री मैं बहुत की तरह एक परीक्षण है। क्या मेरी अपेक्षाओं को बताने का एक और संक्षिप्त तरीका है। मैंने दस्तावेज़ों को देखा है लेकिन मैं नहीं देख सकता कि मेरी अपेक्षाओं को कहां कंप्रेस करना है। धन्यवाद।परीक्षण हैश RSpec
उत्तर
http://rubydoc.info/gems/rspec-expectations/RSpec/Matchers:include
यह बहुत हैश के लिए काम करता है: @ करने के लिए दाऊद के जवाब जोड़ने
jump_locations.should include(
"upper_left" => true,
"upper_right" => false,
"lower_left" => false,
"lower_right" => true
)
बस चाहता हूँ। आप अपने include
हैश में मैचर्स का घोंसला और उपयोग कर सकते हैं। उदाहरण के लिए:
# Pass
expect({
"num" => 5,
"a" => {
"b" => [3, 4, 5]
}
}).to include({
"num" => a_value_between(3, 10),
"a" => {
"b" => be_an(Array)
}
})
एक चेतावनी: एक नेस्टेड include
हैश सभी कुंजियों का परीक्षण करना चाहिए या परीक्षण असफल हो जायेगी, जैसे:
# Fail
expect({
"a" => {
"b" => 1,
"c" => 2
}
}).to include({
"a" => {
"b" => 1
}
})
आप नेस्ट का उपयोग करके अपने चेतावनी हल कर सकते हैं शामिल हैं: '' 'उम्मीद ({ " एक "=> { " बी "=> 1, " सी "=> 2 } }) शामिल करने के लिए (। { "ए" => शामिल हैं ({ "बी" => 1 }) }) '' – AngelCabo
अधिकांश मैचर्स में "क्रिया" और लंबा "संज्ञा" उपनाम दोनों होते हैं, बाद में घोंसले के दौरान बेहतर पढ़ सकते हैं: ' उम्मीद करें ({"a" => {"b" => 1, "c" => 2}})। ({"a" => a_hash_including ({"b" => 1})})। http://timjwade.com/2016/08/01/testing-json-apis-with-rspec-composable-matchers.html इस पर एक अच्छा ब्लॉग पोस्ट है। –
सिंटेक्स RSpec 3 के लिए बदल गया है, लेकिन मिलान में शामिल हैं अब भी है एक:
expect(jump_locations).to include(
"upper_left" => true,
"upper_right" => false,
"lower_left" => false,
"lower_right" => true
)
एक अन्य आसान तरीका परीक्षण करने के लिए अगर पूरी सामग्री एक हैश चेकआउट करने के लिए करता है, तो सामग्री हैश वस्तु ही है है:
it 'is to be a Hash Object' do
workbook = {name: 'A', address: 'La'}
expect(workbook.is_a?(Hash)).to be_truthy
end
धन्यवाद, डेविड। बीटीडब्ल्यू विशाल प्रशंसक। वास्तव में आरएसपीसी पुस्तक का आनंद लिया। –
मेरी इच्छा है कि एक समान विधि थी जैसे match_array –
फैनेज डेविड पर डितो! आपका "रूपेक बुक" अच्छी तरह से थंब गया है! –