2013-06-04 19 views
13

我想在PHPUnit中運行測試並獲取此錯誤。類__PHP_Incomplete_Class沒有unserializer

Fatal error: Uncaught exception 'ErrorException' with message 'Class __PHP_Incomplete_Class has no unserializer' in /opt/lampp/lib/php/PHPUnit/Util/PHP.php:237

PHP - 5.4.7 
PHPUnit - 3.7.21 

PHPUnit的設置:

processIsolation = "true" 

在此先感謝。

+1

你試過Google嗎? https://www.google.co.uk/search?q=Class+__PHP_Incomplete_Class+has+no+unserializer似乎具體到PHPUnit的一個問題,Symfony2的 – Pudge601

+0

http://stackoverflow.com/a/14514753/921154可能相關。當使用一個將PDO連接放到其全局範圍的框架時,解決方案是將該變量添加到backupglobalblacklist:http://phpunit.de/manual/3.7/en/fixtures.html#idp7165424 – qrazi

回答

1

嘗試在瀏覽器中打開您的網站,然後再次嘗試執行測試。我相信它會工作,似乎有是由PHP單位和Symfony的

10

嘗試清除測試環境中的緩存緩存生成一些差異。 php app/console cache:clear --env=test

+0

謝謝,但它沒有工作,我知道原因,但我不確定,因爲我沒有任何解決方案。這個問題是由於「GLOBALS」在PHP和PHPUNIT中的處理方式不同,我甚至試過這個選項(http://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.backupGlobals) – Infinity

6

這裏有一個調試解決方案,其中反序列化方法失敗,可能會幫助您找到:

<?php 
ini_set('unserialize_callback_func', 'debug_unserialize'); 

function debug_unserialize($classname) 
{ 
    die(var_dump($classname)); 
} 

這樣,你將看到一個類名是造成問題。

+0

有用的命令。但是,我的輸出顯示不存在的類。任何想法,爲什麼會這樣?我有一種感覺,這是由於作曲家或緩存出了問題,但我已經清除並重新安裝了作曲家包 – Windowpane