ntalbott का उत्तर एक क्रिया प्राप्त करता है। पोस्ट एक्शन थोड़ा सा ट्रिकियर है; यदि आप नई ऑब्जेक्ट को एक्सएमएल संदेश के रूप में भेजना चाहते हैं, और एक्सएमएल विशेषता नियंत्रक में पैरा हैश में दिखाई देती है, तो आपको हेडर सही मिलना होगा। यहाँ एक उदाहरण (रेल 2.3.x) है:
class TruckTest < ActionController::IntegrationTest
def test_new_truck
paint_color = 'blue'
fuzzy_dice_count = 2
truck = Truck.new({:paint_color => paint_color, :fuzzy_dice_count => fuzzy_dice_count})
@headers ||= {}
@headers['HTTP_ACCEPT'] = @headers['CONTENT_TYPE'] = 'application/xml'
post '/trucks.xml', truck.to_xml, @headers
#puts @response.body
assert_select 'truck>paint_color', paint_color
assert_select 'truck>fuzzy_dice_count', fuzzy_dice_count.to_s
end
end
आप यहाँ देख सकते हैं कि 2 तर्क पोस्ट करने के लिए एक पैरामीटर हैश होने के लिए नहीं है, यह एक स्ट्रिंग (एक्सएमएल युक्त) हो सकता है, यदि हेडर सही हैं। तीसरा तर्क, @ हेडर, वह हिस्सा है जिसने मुझे पता लगाने के लिए बहुत सारे शोध किए।
(नोट भी to_s का उपयोग, जब assert_select में एक पूर्णांक मूल्य की तुलना।)
वह भाग मुझे पता है, एक A..Z एकीकरण परीक्षण –
कि assert_equal की तलाश में भी बहुत नाजुक है। तत्व या विशेषता आदेश की कोई गारंटी नहीं है; यदि यह बदलता है, तो आपका परीक्षण टूट जाएगा। लिटल स्ट्रिंग तुलना एक्सएमएल पेड़ों की समानता की जांच करने का सही तरीका नहीं है। – bjnord