2017-03-22 57 views
0

私は、Laravel 5.3のバージョンを持ち、Laravel Infyom Generatorを使っているプロジェクトに取り組んでいます。どうにかこれらの特性や(ApiTest、RepositoryTestなどの)テストファイルを生成しました。私が実行しようとするとPHPUNIT私はこのエラーが表示されます誰かが私がこのエラーが表示されている理由を見つけるのを助けることができますか?Laravel Trait not found PHP致命的なエラー

PHP Fatal error: Trait 'MakeCustomerTrait' not found in C:\Users\ahmed\dev\gamla\tests\CustomerApiTest.php on line 8 

Fatal error: Trait 'MakeCustomerTrait' not found in C:\Users\ahmed\dev\gamla\tests\CustomerApiTest.php on line 8 

私のプロジェクトに新しいテストを作成したいのですが、これらのファイルを削除する必要がありますか?それは私にそのエラーを与え続けるので? CustomerApiTestコードの

スクリーンショット: enter image description here

MakeCustomerTrait

<?php 

use Faker\Factory as Faker; 
use App\Models\Customer; 
use App\Repositories\CustomerRepository; 

trait MakeCustomerTrait 
{ 
    /** 
    * Create fake instance of Customer and save it in database 
    * 
    * @param array $customerFields 
    * @return Customer 
    */ 
    public function makeCustomer($customerFields = []) 
    { 
     /** @var CustomerRepository $customerRepo */ 
     $customerRepo = App::make(CustomerRepository::class); 
     $theme = $this->fakeCustomerData($customerFields); 
     return $customerRepo->create($theme); 
    } 

    /** 
    * Get fake instance of Customer 
    * 
    * @param array $customerFields 
    * @return Customer 
    */ 
    public function fakeCustomer($customerFields = []) 
    { 
     return new Customer($this->fakeCustomerData($customerFields)); 
    } 

    /** 
    * Get fake data of Customer 
    * 
    * @param array $postFields 
    * @return array 
    */ 
    public function fakeCustomerData($customerFields = []) 
    { 
     $fake = Faker::create(); 

     return array_merge([ 
      'name' => $fake->word, 
      'address_street' => $fake->word, 
      'address_zip' => $fake->word, 
      'address_city' => $fake->word, 
      'address_country' => $fake->word, 
      'shipping_address_street' => $fake->word, 
      'shipping_address_zip' => $fake->word, 
      'shipping_address_city' => $fake->word, 
      'shipping_address_country' => $fake->word, 
      'contact_person_id' => $fake->randomDigitNotNull, 
      'created_at' => $fake->word, 
      'updated_at' => $fake->word 
     ], $customerFields); 
    } 
} 
+0

特性の完全な名前空間を使用するか、ファイルのuse文で定義します。グローバルな名前空間では '\ MakeCustomerTrait'のように使用します。 –

+0

あなたはそれをここに書いて、あなたが意味することを理解できますか? –

+0

私はコメントを更新しました。それが動作するかどうか確認してください。 –

答えて

0

実際に何が起こっているが、ここでオートローダは、コード内でクラスを解決することができませんです。 LaravelはPSR-4標準を使用してクラスを自動ロードします。このクラスには、クラスを保持するファイルのパスを表す完全修飾の名前空間が必要です。

次のアドレスにごLaravelのappディレクトリ内のクラスをロードする場合という、このようにそれを参照してください。そう

app/repositories/users/UserRoleRepository.php 

あなたは、クラス名UserRoleRepositoryApp\repositories\usersのようなあなたのクラスの名前空間を指定しますオートローダあなたのクラスを読み込むことができます。それ以外の場合は、クラスのファイルを手動で含める必要があります。

composer.jsonにカスタムオートロードを登録し、次のコマンドcomposer dump-autoloadを実行することができます。

あなたがインターネットlike this

上でそれについての詳細を見つけることができますが、それが役立つだろうと思います。

+0

私は既に "app \\":composer.jsonに "app /" **を持っています。複数追加できますか?あなたは私にそれを見せてもらえますか?/ –

+0

これを追加しました** "Tests \\": "tests /" **同様に、このような名前空間を定義します:** Tests \ Traits \ MakeCustomerTrait; **このエラーが発生しています** PHP致命的なエラー: 'Tests \ Traits \ MakeCustomerTrait'がC:\ Users \ ahmed \ dev \ myfurhat \ tests \ CustomerApiTest.phpの8行目に見つかりません 致命的なエラー:C:\ Users \ ahmed \ dev \ myfurhat \ tests \ CustomerApiTest.phpの8行目に 'Tests \ Traits \ MakeCustomerTrait'という特性が見つかりません** –

+0

PHPの 'include 'メソッド。試運転には大丈夫です。 –

関連する問題