2010-06-11 73 views
0

我目前正在嘗試針對我的zend框架控制器編寫一些單元測試。當我運行下面的代碼我收到此錯誤:在執行phpunit測試期間DomDocument :: loadHTML()錯誤

public function testListActionShouldContainListTable() 
    { 

     $this->loginToSystem(); 

     $uri = $this->_uriBase . 'campaign/list'; 
     $_SERVER["REQUEST_URI"] = $uri; 

     $this->dispatch('/campaign/list'); 
     $this->assertController('campaign'); 
     $this->assertAction('list'); 
     $this->assertQueryCount('#list',1); 
    } 


CampaignControllerTests::testListActionShouldContainListTable 
DOMDocument::loadHTML(): ID alrt already defined in Entity, line: 36 

會出現此使用任何assertQuery和assertQueryContains方法。我已經搜索過,但是我沒有真正找到一個很好的答案,爲什麼它不會讓我找到這個html節點或如何解決這個錯誤。

在此先感謝您的幫助!

回答

0

由調度生成的HTML不好(它看起來像有兩個ID被分配給一個標籤)。這不是你的測試錯誤(它工作正常),它是由你的html輸出錯誤產生的測試...

+0

我做了$ this-> getResponse-> outputBody()和getBody()的回聲,並且可以找到沒有重複的id。我已經嘗試了CSS只搜索「body」,「div」以及xpath搜索,並且它們都產生相同的錯誤。適當的時候我刪除了assertQuery調用,測試通過。 – ranhan 2010-06-11 20:51:19

+0

查找具有相同ID的多個元素,或具有多個ID屬性的元素... – ircmaxell 2010-06-11 21:01:27

+0

謝謝你是對的。在我停止忽略視頻複製之前,它只花了2次時間才通過了標記。 – ranhan 2010-06-13 20:36:00

1

確保文檔有效。您的HMTL文檔中有重複的ID。