gpt4 book ai didi

laravel - Laravel setUpBeforeClass上的PHPUnit找不到工厂类

转载 作者:行者123 更新时间:2023-12-05 00:58:58 28 4
gpt4 key购买 nike

我正在尝试运行在测试运行之前将数据输入数据库的单元测试。我已经定义了一个设置方法,它为每个我不想要的测试用例运行。设置方法执行良好,没有问题。我想要的是将数据输入数据库一次,然后由所有测试用例使用。所以我设置了一个静态函数 setUpBeforeClass。

public static function setUpBeforeClass() : void {
parent::setUpBeforeClass();
static::$journalOption = new JournalOption;
$this->user = factory(User::class)->create();


}

当调用用户工厂类时,出现以下错误:

InvalidArgumentException: 无法找到名称为 [default] [App\User] 的工厂

UserFactory.php文件存在于database/factories/UserFactory.php

<?php

use Illuminate\Support\Str;
use Faker\Generator as Faker;


$factory->define(App\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => Str::random(10),
];
});

最佳答案

factory 函数在您的 setUpBeforeClass 函数中无法正常工作,因为该函数运行时应用程序尚未引导。您可以引导应用程序并在 setUpBeforeClass 函数中运行迁移,但我不建议这样做。

通常,您应该为每个测试分别创建所需的数据,以防另一个测试修改或删除数据,或者有其他意外的副作用。因此,如果您将工厂保留在 setup() 函数中会更好。如果您担心污染数据库,可以使用内存中的 SQLite 数据库进行测试。

关于laravel - Laravel setUpBeforeClass上的PHPUnit找不到工厂类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55174291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com