2011-03-01 59 views
2

我遇到了assertQuery()問題。在HTML我已經(通過輸出人體驗證)phpUnit - assertQuery失敗

<input type="text" name="LASTNAME" id="LASTNAME" value="" maxlength="25" size="20" /> 

所以我寫了一個查詢它來測試,以確保該元素存在,且這個值是空

$this->assertQuery('input#LASTNAME[value=""]', 1); 

PHPUnit的說,斷言失敗表示BY 輸入#LASTNAME

無法斷言節點[值= 「」] EXISTS

你能否告訴我爲什麼這個斷言失敗以及如何正確編寫它?

提前致謝!

回答

4

將CSS選擇器轉換爲XPath查詢的Zend Framework代碼已損壞。它不會在屬性名稱之前添加所需的@。使用這個雖然不正確的CSS,斷言:

$this->assertQuery('input#LASTNAME[@value=""]', 1); 

查看this forum thread瞭解詳情。

更新:issue was reportedfixed in release 1.10,因此您可以升級您的Zend Framework作爲使用無效CSS選擇器的替代方案。

+0

非常好,完整的答案:) – edorian 2011-03-01 13:34:44

1

或者,你可以使用XPath代替CSS選擇,從而跳過由Zend_Dom_Query執行CSSXPath轉換:

$this->assertXpath('//input[@id="LASTNAME"][@value=""]');