Я пытаюсь использовать REST Assured для проверки некоторых свойств в HTML-документе, возвращаемом моим сервером. SSCCE, демонстрирующий проблему, будет выглядеть следующим образом:
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"));
}
}
Теперь эта попытка заканчивается com.jayway.restassured.path.xml.exception.XmlPathException: Failed to parse the XML document
, вызванным, выключив все возможные ошибки, java.net.ConnectException: Connection timed out
примерно через 30 секунд!
Если я удалю строку с 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 в любом случае для меня не вариант.
Итак, вопрос: как вы проверяете свойства документа HTML с типом документа с помощью REST Assured? в документации сказано, что «поставщики с гарантированным REST предопределенные парсеры, например, HTML, XML и JSON. ", но я не могу найти никаких примеров того, как именно активировать и работать с этим парсером HTML! Нет класса "HtmlPath
", такого как, например, XmlPath
, и это исключение тайм-аута очень озадачивает ...