Laravel Trait не найден PHP Fatal Error

Я работаю над проектом, который имеет версию Laravel 5.3 и использую Laravel Infyom Generator, каким-то образом он генерировал все эти черты и другие тестовые файлы, такие как (ApiTest, RepositoryTest, … и т. д.). когда я пытаюсь бежать PHPUnit Я получаю эту ошибку Может ли кто-нибудь помочь мне выяснить, почему я получаю эту ошибку?

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 код:
введите описание изображения здесь

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

Решение

На самом деле, здесь происходит то, что автозагрузчик не может разрешить класс в вашем коде. Laravel использует стандарты PSR-4 для автозагрузки классов, которым нужны полностью определенные пространства имен для класса, который также представляет путь к файлу, который содержит класс.

Посмотрите на это так, что если вы хотите загрузить класс в каталог приложения Laravel по следующему адресу:

app/repositories/users/UserRoleRepository.php

Вы будете указывать пространство имен вашего класса как App\repositories\users с именем класса UserRoleRepository поэтому автозагрузчик может загрузить ваш класс. В противном случае вы должны включить файл вашего класса вручную.

Вы можете зарегистрировать пользовательские автозагрузки в своем composer.json и запустив следующую команду composer dump-autoload,

Вы можете найти больше об этом через Интернет как это

Надеюсь, это поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]