Shindo.tests('Fog::Parsers', 'core') do class TestParser < Fog::Parsers::Base def reset super reset_my_array end def reset_my_array @my_array = [] end def end_element(name) case name when 'key1', 'key2', 'key3', 'longText' @response[name] = value when 'myArray' @response[name] = @my_array reset_my_array when 'id' @my_array << value.to_i end end end @xml = %{ <MyResponse> <MyObject> <key1>value1</key1> <key2>value2</key2> <myArray> <id>1</id> <id>2</id> <id>3</id> </myArray> <longText> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quis metus arcu, quis cursus turpis. Aliquam leo lacus, luctus vel iaculis id, posuere eu odio. Donec sodales, ante porta condimentum </longText> <key3>value3</key3> </MyObject> <MyResponse> } @response = { 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3', 'myArray' => [1,2,3], 'longText' => %{ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quis metus arcu, quis cursus turpis. Aliquam leo lacus, luctus vel iaculis id, posuere eu odio. Donec sodales, ante porta condimentum } } tests('TestParser').returns(@response, "returns the response") do test_parser = TestParser.new Nokogiri::XML::SAX::Parser.new(test_parser).parse(@xml) test_parser.response end end