2017-03-22 124 views
0

我正在開發一個Laravel 5.3版本並使用Laravel Infyom Generator的項目,它以某種方式生成了所有這些特徵和其他測試文件,如(ApiTest,RepositoryTest等等)。當我嘗試運行PHPUNIT我得到這個錯誤有人可以幫我找出爲什麼我得到這個錯誤?找不到Laravel Trait 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/repositories/users/UserRoleRepository.php 

您將指定類的命名空間像App\repositories\users與類名UserRoleRepository所以自動加載機可以加載你的班級。否則,您必須手動添加班級的文件。

您可以在composer.json中註冊自定義自動加載並運行以下命令composer dump-autoload

你可以找到在互聯網like this

更多關於它希望這會有所幫助。

+0

我已經有**「App \\」:「app /」**在我的composer.json中,我可以添加多個?請你可以把它展示給我我自從早上開始真的很頭疼:/ –

+0

我添加了這個**「Tests \\」:「tests /」**,然後spefity這樣的命名空間:** use Tests \ Traits \ MakeCustomerTrait; **但是這次我得到這個錯誤** PHP致命錯誤:在第8行中找不到C:\ Users \ ahmed \ dev \ myfurhat \ tests \ CustomerApiTest.php中的Trait'Tests \ Traits \ MakeCustomerTrait' 致命錯誤:在第8行的C:\ Users \ ahmed \ dev \ myfurhat \ tests \ CustomerApiTest.php中找不到Trait'Tests \ Traits \ MakeCustomerTrait'** –

+0

您可以使用php的include來手動包含您的trait文件'方法。測試運行可以。 –

相關問題