REST Assuredを使用して、サーバーから返されたHTML文書の一部のプロパティをチェックしようとしています。次のような問題を実証SSCCEは次のようになります。REST保証付きのHTML文書を確認する
import static com.jayway.restassured.path.xml.config.XmlPathConfig.xmlPathConfig;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import com.jayway.restassured.path.xml.XmlPath;
public class HtmlDocumentTest {
@Test
public void titleShouldBeHelloWorld() {
final XmlPath xml = new XmlPath("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
+ "<head><title>Hello world</title></head><body></body></html>")
.using(xmlPathConfig().with().feature("http://apache.org/xml/features/disallow-doctype-decl", false));
assertThat(xml.get("//title[text()]"), is("Hello world"));
}
}
さて、この試みは、すべての可能なエラー、いくつかの30秒ほど後にjava.net.ConnectException: Connection timed out
オフ、によって引き起こさcom.jayway.restassured.path.xml.exception.XmlPathException: Failed to parse the XML document
に終了します!
xmlPathConfig().with().feature(...)
の行を削除すると、すぐにDOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true.
が原因でテストが失敗します。
ドキュメントからdoctype行を削除すると、解析は成功しますが、アサーションエラー "Expected: is "Hello world" but: was <Hello worldnull>
"でテストが失敗しますが、それは明らかに別の問題です(ただし、 ...)。とにかくdoctypeを削除することは私の選択肢ではありません。
質問:どのようにして、REST保証を使用してDoctypeでHTML文書のプロパティをチェックしますか? in the documentationは、「REST保証プロバイダは、HTML、XML、JSONなどの事前定義済みパーサー」と述べていますが、そのHTMLパーサーをどのように有効にして使用するかについての例は見当たりません。たとえば、XmlPath
のような "HtmlPath
"クラスはありません。そのタイムアウト例外は非常に困惑しています...
クール、ありがとうございました!魅力のように働くようですが、私はあなたに賞金を授与させていただきます。 :)あなたが気にしない場合、もう1つの質問:プロパティアクセス構文では、任意のIDまたはクラスを持つ要素を見つけて、その内容をアサートすることは可能ですか? – ZeroOne
@上記の更新された回答をご覧ください。 –
さて、ありがとう!ここでは、upvoteも持っています。 :) – ZeroOne