Невозможно найти завод в Laravel 7 - PullRequest
0 голосов
/ 11 июля 2020

Я делаю модульный тест для PHPunit. Код:

<?php

namespace Tests\Unit;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use PHPUnit\Framework\TestCase;

class ThreadTest extends TestCase
{
    use DatabaseMigrations;



    public function test_a_thread_has_replies()
    {

        $thread = factory('App\Thread')->create();

        $this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $thread->replies);
    }
}

Когда я запускаю PHPUnit, я получаю сообщение об ошибке:

InvalidArgumentException: невозможно найти фабрику для [App \ Thread].

У меня есть фабрика потоков:

<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Thread;
use Faker\Generator as Faker;

$factory->define(Thread::class, function (Faker $faker) {
    return [
        'user_id' => factory(App\User::class),
        'title' => $faker->sentence,
        'body' => $faker->paragraph
    ];
});

Если я использую фабрику в Tinker, она работает нормально.

У меня есть аналогичные тестовые функции и фабрики для других классов, и они работают нормально.

Скорее всего, я делаю очень глупую ошибку, но не могу ее найти.

Есть предложения?

С уважением,

HUbert

1 Ответ

2 голосов
/ 11 июля 2020

Вы расширяете класс php unit testcase. Что не загружает ваше приложение Laravel. Вам следует расширить использование Tests \ TestCase, предоставленное Laravel.

Использование php artisan make: test UserTest в интерфейсе командной строки создаст тест с правильным шаблоном, подходящим для тестирования приложения Laravel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...