¿Cómo comparo la salida xml en un paso de Pepino usando un ejemplo de cadena multilínea?

Chargify tiene este escenario de Pepino en su docs.

Scenario: Retrieve a customer via my reference id (as an integer or simple string)
Given I have a customer with these attributes
  | reference | first_name | last_name | email           |
  | 7890      | Joe        | Blow      | [email protected] |
When I send a GET request to https://[@subdomain].chargify.com/customers/lookup.xml?reference=7890
Then the response status should be "200 OK"
And the response should be the xml:
  """
  <?xml version="1.0" encoding="UTF-8"?>
  <customer>
    <id type="integer">`auto generated`</id>
    <first_name>Joe</first_name>
    <last_name>Blow</last_name>
    <email>[email protected]</email>
    <organization>`your value`</organization>
    <reference>7890</reference>
    <created_at type="datetime">`auto generated`</created_at>
    <updated_at type="datetime">`auto generated`</updated_at>
  </customer>
  """

Estoy tratando de seguir su enfoque al probar una API que estamos desarrollando aquí, en lugar de verificar las etiquetas una por una, como lo hacía antes de encontrar este ejemplo.

Hasta ahora no hubo suerte para que coincida la salida de la respuesta con la cadena multilínea del paso, debido a problemas de formato. No he encontrado una manera con Nokogiri ni con una simple comparación de cadenas despojadas.

Existe una manera elegante (y eficiente) de hacer esto?

Actualiza

Aquí está el paso del pepino usando la solución de Mark:

Then /^I should see the following output$/ do |xml_output|
  response = Hash.from_xml(page.body)
  expected = Hash.from_xml(xml_output)  
  expected.diff(response).should == {}
end

Respuestas a la pregunta(2)

Su respuesta a la pregunta