ntalbottからの回答は、getアクションを示しています。ポストアクションはややこしいです。新しいオブジェクトをXMLメッセージとして送信し、XML属性をコントローラのparamsハッシュに表示するには、ヘッダーを正しく取得する必要があります。ここにある例(Rails 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引数はパラメータハッシュである必要はありません。ヘッダーが正しい場合は、文字列(XMLを含む)、にすることができます。 3番目の引数@headersは、私に把握するために多くの研究を要した部分です。
(また注意to_sの使用assert_selectの整数値を比較する。)
も非常に脆弱であるassert_equal A..Z統合テスト –
を探して、私が知っているパート。要素や属性の順序は保証されません。変更された場合、テストは中断されます。リテラル文字列の比較は、XMLツリーの等価性をチェックする正しい方法ではありません。 – bjnord