2017-07-28 22 views
2

PHPUnit 5.xでは何の問題もありませんでした。 6.2にアップグレードすると、次のエラーが発生し始めました。 Fatal error: Class 'Eloquent' not found in /my/app/Database/Model.php on line 14 私はすでにcomposer dump-autoloadを実行しました。それは前に働いていたので、新しいバージョンのTestCase.phpの設定方法が変更されたためだと思うが、何も見つからない。私は何が悪かったのかを考え出しPHPUnit 6.2致命的なエラー:クラス「Eloquent」が/.../Database/Model.phpに見つかりません

class TestCase extends Illuminate\Foundation\Testing\TestCase { 
    protected $baseUrl = 'http://whatever.thing'; 
    public $user; 
    public $password; 
    public $mockUser; 
    public function createApplication() { 
     //Server address used by the test suite's instance of $_SERVER. 
     $_SERVER['REMOTE_ADDR'] = isset($_SERVER['REMOTE_ADDR'])? $_SERVER['REMOTE_ADDR']:'127.0.0.1'; 

     $app = require __DIR__.'/../bootstrap/app.php'; 

     $app->make('Illuminate\Contracts\Console\Kernel')->bootstrap(); 

     return $app; 
    } 

} 

答えて

1

public function setUp() 
    { 
     parent::setUp(); 
    } 

TestCase.php:テスト自体で

、私はこの

テストのセットアップ方法などの親設定メソッドを呼び出していますアップグレード中。まず、私はこのようなEloquentを拡張したモデルクラスを持っていた:

use Eloquent; 

私はこれにそれを変更し、それが働いた:

use Illuminate\Database\Eloquent\Model as Eloquent; 

その後、私は新鮮なLaravel 5.4プロジェクトを生成し、どのように見彼らはPHPUnitの新しいバージョンを実装していました。私は新しい構造に従っただけでなく、私のTestCase.phpを新しい道に進化させました。

TestCase.phpを::お探しの方のために

namespace Tests; 

use Illuminate\Foundation\Testing\TestCase as BaseTestCase; 

abstract class TestCase extends BaseTestCase 
{ 
    use CreatesApplication; 
} 

CreatesApplication.php:

namespace Tests; 

use Illuminate\Contracts\Console\Kernel; 

trait CreatesApplication 
{ 
    /** 
    * Creates the application. 
    * 
    * @return \Illuminate\Foundation\Application 
    */ 
    public function createApplication() 
    { 
     $app = require __DIR__.'/../bootstrap/app.php'; 

     $app->make(Kernel::class)->bootstrap(); 

     return $app; 
    } 
} 
+0

に聞こえるので、ちょうど求めて、おそらく公正:Laravelはそのためのベース・テストケースを提供していませんか?私はLaravelには何が共通しているのか分かりませんが、ベーステストケースやフレームワークTrait(?)を再利用すればいいのですか? – hakre

+0

この回答は実際には、新しくプロジェクトをインスタンス化するときに、Laravelの基本テストクラスの設定方法をコピーしています。しかし、Laravelの古いバージョンを使用していて、新しいバージョンにアップグレードした場合、元に戻ってその動作を模倣する必要があります。私の本当の問題は、新バージョンのLaravelと新しいPHPUnitを組み合わせることで、以前は問題ではなかったアプリ内の他の問題が見つかりました。 –

関連する問題