2012-10-05 36 views
0

有誰知道是否有辦法強制CakePHP TestSuite在失敗時查看斷言的Expected和Result值?典型的PHPUnit測試在輸出中默認顯示它,但不是Cake的TestSuite(它使用PHPUnit)。從這一方面來說,當我在NetBeans中調試一個測試用例時,每當我嘗試爲變量設置一個監視時,就會得到某種套接字異常,並且它僅發生在CakePHP測試用例中,它在evry其他源文件中正常工作。有沒有解決這個問題的方法?在CakePHP測試中顯示斷言的結果和期望值

回答

0

退房 http://www.dereuromark.de/2011/12/04/unit-testing-tips-for-2-0-and-phpunit/

基本上,你可以擴展TestCase類,使自己的其他方法一樣

public function details($is, $expected) { 
    echo 'is:' . $is; echo '<br />'; 
    echo 'expected: ' . $expected; ob_flush(); 

}

和內部或某物調用它的失敗。或者你只是在各處調試()。

+0

不幸在我的情況下,當我試圖回聲從TestCase任何東西它不會在瀏覽器中,再加上它看起來有點hacky。 –

+0

你注意到了「ob_flush」嗎?你還需要輸出之前的斷言(失敗,它會立即破壞) – mark

+0

啊是的,我錯過了沖洗的事情對不起,無論如何,我設法工作的方式,我看到它大tnx無論如何:) –

0

好的我以某種方式解決了當你更新Cake Library文件時,解決方案將被抹去。你需要編輯文件lib\Cake\TestSuite\Reporter\CakeHtmlReporter並更改方法:

public function paintFail($message, $test) 
{ 
    $trace = $this->_getStackTrace($message); 
    $testName = get_class($test) . '(' . $test->getName() . ')'; 
    echo "<li class='fail'>\n"; 
    echo "<span>Failed</span>"; 
    echo "<div class='msg'><pre>" . $this->_htmlEntities($message) . "</pre></div>\n"; 
    echo "<div class='msg'>" . __d('cake_dev', 'Test case: %s', $testName) . "</div>\n"; 
    echo "<div class='msg'>" . __d('cake_dev', 'Stack trace:') . '<br />' . $trace . "</div>\n"; 
    echo "</li>\n"; 
} 

到:

public function paintFail($message, $test) { 
    $trace = $this->_getStackTrace($message); 
    $testName = get_class($test) . '(' . $test->getName() . ')'; 

    echo "<li class='fail'>\n"; 
    echo "<span>Failed</span>"; 
    echo "<div class='msg'><pre>" . $this->_htmlEntities($message->getComparisonFailure()->toString()) . "</pre></div>\n"; 
    echo "<div class='msg'>" . __d('cake_dev', 'Test case: %s', $testName) . "</div>\n"; 
    echo "<div class='msg'>" . __d('cake_dev', 'Stack trace:') . '<br />' . $trace . "</div>\n"; 
    echo "</li>\n"; 
} 

,這將輸出你這樣的事情時斷言失敗:

Failed asserting that two arrays are equal.--- Expected 
+++ Actual 
@@ @@ 
Array (
- 0 => 'Crypto3DS' 
- 1 => 'Zlib' 
+ 1 => 'Crypto3DS' 
+ 2 => 'Zlib' 
) 

更快的測試在蛋糕Yeppie:D

相關問題