0

我正在开发一个具有 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);
    }
}
4

1 回答 1

0

实际上这里发生的事情是自动加载器无法解析代码中的类。Laravel 使用 PSR-4 标准来自动加载需要类的完全限定名称空间的类,该类也表示包含该类的文件的路径。

如果您想在 Laravel 应用程序目录中加载一个类,请以这种方式查看,地址如下:

app/repositories/users/UserRoleRepository.php

您将像App\repositories\users使用类名一样指定类的命名空间,UserRoleRepository以便自动加载器可以加载您的类。否则,您必须手动包含您的班级文件。

您可以composer.json通过运行以下命令在您的和中注册自定义自动加载composer dump-autoload

你可以像这样在互联网上找到更多关于它的信息

希望它会有所帮助。

于 2017-03-22T13:28:04.567 回答