InvalidArgumentException:无法找到名为[default]-laravel、faker、phpunit的工厂
由于我正在开发软件包,所以我将我的工厂放在如下定制路径:InvalidArgumentException:无法找到名为[default]-laravel、faker、phpunit的工厂,laravel,phpunit,faker,Laravel,Phpunit,Faker,由于我正在开发软件包,所以我将我的工厂放在如下定制路径: -- app -- packages -----mockizart -------blog ---------database --------------factories ----------------- PageModelFactory.php ---------src class TestCase extends \Orchestra\Testbench\TestCase { public function
-- app
-- packages
-----mockizart
-------blog
---------database
--------------factories
----------------- PageModelFactory.php
---------src
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;
}
}
这是我在服务提供商中加载factory的方式(我已经通过在phpstorm上单击它来确保路径正确):
函数启动()
{
Factory::construct($this->app->make(\Faker\Generator::class),\uuuu DIR\uuuu./../database/factories”);
}
这是我的页面模型工厂(我已经确定该文件确实已加载):
因此,如果您使用的是orchestra\Testbench
,加载自定义工厂的正确方法是在测试类的setUp()
方法中,或者在服务提供商的中不加载
代码如下所示:
-- app
-- packages
-----mockizart
-------blog
---------database
--------------factories
----------------- PageModelFactory.php
---------src
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;
}
}