InvalidArgumentException:无法找到名称为 [default] 的工厂 - laravel、faker、phpunit
Posted
技术标签:
【中文标题】InvalidArgumentException:无法找到名称为 [default] 的工厂 - laravel、faker、phpunit【英文标题】:InvalidArgumentException: Unable to locate factory with name [default] - laravel, faker, phpunit 【发布时间】:2020-02-26 03:18:43 【问题描述】:因为我正在开发包,所以我把我的工厂放在这样的自定义路径中:
-- app
-- packages
-----mockizart
-------blog
---------database
--------------factories
----------------- PageModelFactory.php
---------src
这就是我在我的服务提供商中加载工厂的方式(我已经通过在 phpstorm 上单击它来确保路径正确):
function boot()
Factory::construct($this->app->make(\Faker\Generator::class), __DIR__."/../database/factories");
这是我的页面模型工厂(我已经确定这个文件真的被加载了):
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use Mockizart\Blog\Dodols\PageModel;
use Faker\Generator as Faker;
$factory->define(PageModel::class, function (Faker $faker)
return [
'name' => "retretre",
'slug' => "retretret",
'type' => 0,
'category' => 0,
'tags' => "",
'content' => "",
];
);
这是我的脚本测试:
use Mockizart\Blog\Dodols\PageModel;
.....
.....
/** @test */
public function edit_page()
dd(PageModel::find(1)); <-- this return was NULL so I think my class and namespace does exist.
factory(PageModel::class)->make(); <-- this cause error "unable to locate factory......"
$response = $this->get('/blog/page/edit/15');
$response->assertStatus(200);
【问题讨论】:
【参考方案1】:所以如果您使用orchestra\Testbench
,加载自定义工厂的正确方法是在您的测试类的setUp()
方法中或您的Service Provider
中的TestCase NOT。
代码如下:
class TestCase extends \Orchestra\Testbench\TestCase
public function setUp(): void
parent::setUp();
// additional setup
$this->loadMigrationsFrom(__DIR__ . '/../database/migrations');
$this->withFactories(__DIR__.'/../database/factories');
protected function getPackageProviders($app)
return BlogServiceProvider::class;
【讨论】:
以上是关于InvalidArgumentException:无法找到名称为 [default] 的工厂 - laravel、faker、phpunit的主要内容,如果未能解决你的问题,请参考以下文章
PHPUnit + Selenium`InvalidArgumentException:找不到元素`
出现错误:InvalidArgumentException:无法找到名称为 [default] [App\User] 的工厂
(InvalidArgumentException(code: 0): Disk [public] 没有配置驱动程序 Voyager
Laravel:错误 InvalidArgumentException
InvalidArgumentException,“未找到视图”,在 Lumen 5.2.6 上
导入AppiumLibrary报错: ImportError: cannot import name 'InvalidArgumentException