alovak / test_xml

Small library to test your xml with Test::Unit or RSpec
Other
30 stars 8 forks source link

= 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

== INSTALL

gem install test_xml

== EXAMPLES

=== Test::Unit and MiniTest

def test_item_representation assert_xml_equal "1", @item.to_xml end

=== RSpec

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

1
XML

end

=== Cucumber

Scenario: When I post some data Then the response should match the following xml """

success
"""

== USAGE:

=== RSpec

In your spec_helper.rb

require 'test_xml/spec'

And in the actual spec, use these matchers:

=== Test::Unit

In the test_helper.rb

require 'test_xml/test_unit'

In your test file, use these matchers:

Negative assertions are available as assertnot*.

=== 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:

Cee

Dee This will fail: Cee as +b+ is not the root node. The check must be written as: Cee === 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}[http://github.com/apotonick] 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.