Laravel 中未知的格式化程序“句子”错误

Nat*_*ope 5 php laravel

工厂定义:

public function definition()
{
    return [
        'user_id' => function() {
            return User::factory()->create()->id;
        },
        'category_id' => function() {
            return Category::factory()->create()->id;
        },
        'title' => $this->faker->sentence,
        'body' => $this->faker->paragraph,
    ];
}
Run Code Online (Sandbox Code Playgroud)

抛出错误的测试

<?php

namespace Tests\Unit;

use App\Models\Question;
use PHPUnit\Framework\TestCase;

class QuestionTest extends TestCase
{
    protected $question;

    public function setUp() : void
    {
        parent::setUp();

        $this->question = Question::factory()->create();
    }


    public function test_it_has_an_owner()
    {
        $this->assertInstanceOf('App\User', $this->question->creator);
    }
}
Run Code Online (Sandbox Code Playgroud)

那是错误:

有 1 个错误:

1) Tests\Unit\QuestionTest::test_it_has_an_owner
InvalidArgumentException: Unknown formatter "sentence"

/var/www/html/QA_CRUD/vendor/fzaninotto/faker/src/Faker/Generator.php:248
/var/www/html/QA_CRUD/vendor/fzaninotto/faker/src/Faker/Generator.php:228
/var/www/html/QA_CRUD/vendor/fzaninotto/faker/src/Faker/Generator.php:285
/var/www/html/QA_CRUD/database/factories/QuestionFactory.php:34
/var/www/html/QA_CRUD/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:366
/var/www/html/QA_CRUD/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:345
/var/www/html/QA_CRUD/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:329
/var/www/html/QA_CRUD/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php:157
/var/www/html/QA_CRUD/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:334
/var/www/html/QA_CRUD/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:302
/var/www/html/QA_CRUD/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:228
/var/www/html/QA_CRUD/tests/Unit/QuestionTest.php:16
Run Code Online (Sandbox Code Playgroud)

有什么问题我知道造假者中确实存在句子键

Chi*_*ung 18

您没有扩展正确的TestCase.

只需替换以下内容:

use PHPUnit\Framework\TestCase;
Run Code Online (Sandbox Code Playgroud)

经过:

use Tests\TestCase;
Run Code Online (Sandbox Code Playgroud)

您可以通过运行php artisan stub:publish和更新stubs/test.unit.stub来覆盖默认存根以扩展正确的测试用例。

有关自定义存根的更多信息:https : //laravel.com/docs/8.x/artisan#stub-customization