Project

test_xml

0.08
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Test your XML with Test::Unit, MiniTest, RSpec, or Cucumber using handy assertions like #assert_xml_equal or #assert_xml_structure_contain.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0
>= 2.2
~> 3.1

Runtime

~> 3.0
>= 1.3.2
 Project Readme

TestXml¶ ↑

DESCRIPTION¶ ↑

TestXml is a small extension for testing XML/HTML. Extending RSpec and TestUnit it makes asserting and comparing XML snippets easy, and is especially helpful for testing RESTful web services and their XML representations.

FEATURES¶ ↑

  • Runs with RSpec 2 or 3, Test::Unit, MiniTest and Cucumber

  • Ruby >= 1.8

  • Test XML structure and content

INSTALL¶ ↑

gem install test_xml

EXAMPLES¶ ↑

Test::Unit and MiniTest¶ ↑

def test_item_representation
  assert_xml_equal "<item><id>1</id></item>", @item.to_xml
end

RSpec¶ ↑

it "should contain the id" do
  @item.to_xml.should equal_xml(<<-XML)
    <item>
      <id>1</id>
    </item>
  XML
end

Cucumber¶ ↑

Scenario:
  When I post some data
  Then the response should match the following xml
  """
    <transaction>
      <status>success</status>
      <id/>
      <order_id/>
    </transaction>
  """

USAGE:¶ ↑

RSpec¶ ↑

In your spec_helper.rb

require 'test_xml/spec'

And in the actual spec, use these matchers:

  • equal_xml

  • contain_xml

  • equal_xml_structure

  • contain_xml_structure

Test::Unit¶ ↑

In the test_helper.rb

require 'test_xml/test_unit'

In your test file, use these matchers:

  • assert_xml_equal

  • assert_xml_contain

  • assert_xml_structure_equal

  • assert_xml_structure_contain

Negative assertions are available as assert_not_*.

MiniTest¶ ↑

In the test_helper.rb

require 'test_xml/mini_test'

Check the Test::Unit section for available assertions.

Cucumber¶ ↑

In the features/env.rb

require 'test_xml'
require 'test_xml/spec'
World(TestXml::Spec)

In your steps file e.g. features/step_definitions/xml_steps.rb add this step:

Then /^the response should match the following xml$/ do |xml|
  response.body.should equal_xml(xml)
end

ASSERTIONS¶ ↑

XML is Equal¶ ↑

Elements, attributes and text nodes are all the same

XML Contains¶ ↑

The XML contains the given structure. Checks ancestral relationships, elements, attributes and text nodes starting from and including the root node.

For example, given this XML:

<a>
  <b><c>Cee</c></b>
  <d>Dee</b>
</a>

This will fail:

<b><c>Cee</c></b>

as b is not the root node. The check must be written as:

<a>
  <b><c>Cee</c></b>
</a>

XML Structure is Equal¶ ↑

Like XML is equal, but ignores attributes and text nodes

XML Structure Contains¶ ↑

Like XML contains, but ignores attributes and text nodes

REQUIREMENTS¶ ↑

  • nokogiri

Many Thanks¶ ↑

Nick Sutterer thank you for bringing RSpec 2, Ruby 1.9.2 and MiniTest! You revived the gem! :)

LICENSE¶ ↑

Copyright © 2010-2011, Pavel Gabriel

Released under the MIT License.