2013-05-21 2 views
1

Я пытаюсь протестировать RSS-канал через Behat/Mink. К сожалению, я получаю сообщение об ошибке все время:Behat/Mink: как я могу оценить xml-ответ

Текущий список узлов пуст.

Кто-нибудь знает, как протестировать ответ XML (поиск строки в xml) через Behat/Mink?

редактировать

Мне нужно найти какой-то способ, и лучше всего было бы, чтобы он работает с Behat/норок. Но если это невозможно вообще, я могу жить с обходным путем. Пример того, как это сделать, было бы здорово!

ответ

5

В файле FeatureContext.php Вы можете получить сырое содержание,

$xml = $this->getSession()->getDriver()->getContent(); 

И тогда вы можете использовать Regex/DomDocument для проверки возвращаемого содержимого XML.

3

Mink - это слой абстракции эмуляции браузера. Некоторые браузеры могут читать RSS, некоторые не могут. Разбор пользовательского XML не является норкой. Для этого используйте комбинацию Behat + Web crawler + DomDocument (или любого парсера PHP RSS).

+0

Спасибо за подсказку! Не могли бы вы описать, как я могу добавить эту функциональность в свой контекст функции (который в моем случае расширяет MinkContext)? Я не говорю о том, как разбирать xml, но как получить содержимое ответа HTTP. Все, что у меня есть в моем контексте, - session :: getPage, который не помогает мне ... – stoefln

+0

@stoefln использовать любой клиент http или даже file_get_contents() для получения rss-канала. –

+0

@JakubZalas ah ok, только что выяснили, что я могу получить текущий url с $ this-> getSession() -> getCurrentUrl() в контексте. это может сработать ... если вы хотите создать ответ, я могу дать вам щедрость за это ... – stoefln

1

Как упоминалось в @everzet, Минка не лучший инструмент для работы, поскольку это эмулятор браузера, а не клиент http.

Вы не ограничены норок, хотя и вы можете использовать любой PHP HTTP-клиент (как guzzle или buzz) или даже file_get_contents() принести корм RSS.

Смежные вопросы