2013-05-21 86 views
1

我試圖通過Behat/Mink測試RSS feed。不幸的是我總是收到錯誤信息:Behat/Mink:我如何評估xml響應

當前節點列表爲空。

有誰知道如何通過Behat/Mink測試XML響應(在xml中搜索字符串)嗎?

編輯

我需要找到某種方式,和最好是把它與貝哈特/水貂運行。 但是,如果那根本不可能,我也可以與解決方法生活在一起。 如何做到這一點的例子會很棒!

回答

5

在你FeatureContext.php文件可以通過

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

獲得原始內容,然後你可以使用正則表達式/的DomDocument測試返回的XML內容。

3

水貂是一個瀏覽器仿真抽象層。有些瀏覽器可以閱讀RSS,有些則不可以。解析自定義XML不是Mink責任。使用Behat + Web爬蟲+ DomDocument(或任何PHP RSS解析器)的組合。

+0

感謝您的提示!你能描述一下如何將這個功能添加到我的功能上下文中(在我的例子中擴展了MinkContext)?我不是在談論如何解析XML,而是如何檢索http響應的內容。所有我在我的上下文中是session :: getPage,它不會幫助我... – stoefln

+0

@stoefln使用任何http客戶端甚至file_get_contents()來獲取rss提要。 –

+0

@JakubZalas啊好的,只是發現我可以在上下文中用$ this-> getSession() - > getCurrentUrl()獲取當前的URL。這可以工作...如果你想創建一個答案,我可以給你的獎金... – stoefln

1

正如@everzet提到,水貂是不是做這項工作的最佳工具,因爲它是一個瀏覽器仿真器,而不是一個HTTP客戶端。

你並不侷限於貂皮,你可以使用任何PHP http客戶端(如guzzlebuzz)或者甚至file_get_contents()來獲取rss訂閱源。