2016-10-17 8 views
0

を許可されていない私は、クロージャからPHPUnitTestをインスタンス化して起動しようとしていますが、私はこのメッセージを得続ける:使用は発生します「閉鎖」のシリアル化が

のMyTest :: authenticate_test例外: 'Closure'のシリアライズは許可されていません。

これはクロージャの外で問題なく動作し、ルートはAura Routerによって管理されます。

class mytest extends TestCase { 
    public function authenticate_test() { 
    // ... 
    } 
} 

$runner = 'PHPUnit_TextUI_TestRunner'; 
$suite = new PHPUnit_Framework_TestSuite('PHPUnit'); 
$suite->addTest(new mytest("authenticate_test")); 

$map->attach('api.v1.', '/api/v1', function ($map) use($runner, $suite) { 
    $map->route('tests', '/tests', function ($request, $response) 
    use($runner, $suite) {  
     $runner::run($suite); // <-- Error comes here 
    }); 
}); 

どうすればよいですか?

私にこれを手伝ってください。

ありがとうございます。

+0

なぜ 'PHPUnit_TextUI_TestRunner ::実行($スイート)'? – xpuc7o

+0

同じエラーが発生する – jessn

答えて

0

this answerは問題の解決策を保持しているようです。

PHPUnitは、テスト中にシステムのすべての$ GLOBALSを必要に応じてシリアル化するという事実に由来します。テストが完了した後、リストアします。しかし、GLOBALスペースにクロージャーがあると、問題が発生します。

は対応したPHPDoc経由$GLOBALSのバックアップを無効にしてみてください:

/** 
* @backupGlobals disabled 
*/ 
class mytest extends TestCase { 
    public function authenticate_test() { 
     // ... 
    } 
} 
関連する問題