will not be accpeted by the assert
assertThat(xml, hasXPath("/books/book/isbn", is(equalTo("B-ISBN"))));
Expected: an XML document with XPath /books/book/isbn is "B-ISBN"
but: mismatches were: [an XML document with XPath /books/book/isbn is "B-ISBN" was "A-ISBN"
But this should match because the book with B-ISBN exists.
A workaround would be to leave out the valueMatcher and put the value into the XPath
assertThat(actualDocument, hasXPath("/books/book/isbn[text()='B-ISBN']"));
which will correctly match the existence but at costs of a poorly explaining error message. This makes it harder identify whether your test is broken or your system-under-test.
It seems convinient to have a XPath-Matcher that is not limited to only look into the first matched element for the XPath
Example-XML:
will not be accpeted by the assert
assertThat(xml, hasXPath("/books/book/isbn", is(equalTo("B-ISBN"))));
But this should match because the book with
B-ISBN
exists.A workaround would be to leave out the
valueMatcher
and put the value into the XPathassertThat(actualDocument, hasXPath("/books/book/isbn[text()='B-ISBN']"));
which will correctly match the existence but at costs of a poorly explaining error message. This makes it harder identify whether your test is broken or your system-under-test.