出现错误:InvalidArgumentException:无法找到名称为 [default] [App\User] 的工厂
Posted
技术标签:
【中文标题】出现错误:InvalidArgumentException:无法找到名称为 [default] [App\\User] 的工厂【英文标题】:Getting Error: InvalidArgumentException: Unable to locate factory with name [default] [App\User]出现错误:InvalidArgumentException:无法找到名称为 [default] [App\User] 的工厂 【发布时间】:2017-04-20 12:00:27 【问题描述】:我在 Laravel 5.1 中工作,尝试运行测试时不断收到此错误:
invalidArgumentException:无法找到具有名称的工厂 [默认] [应用\用户]
这是我的测试代码:
namespace tests\unit;
class UserTest extends \TestCase
public function testTheUser()
$user = factory(\App\User::class)->make();
$this->assertTrue(true,'Test Something');
这是我的 ModelFactory.php
它位于database/factories/ModelFactory.php
$factory->define(\App\User::class, function (Faker\Generator $faker)
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
);
为了彻底,这就是 TestCase 的样子:
class TestCase extends Illuminate\Foundation\Testing\TestCase
protected $baseUrl = 'http://localhost';
/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
$app = require __DIR__.'/../bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
return $app;
它似乎没有加载 ModelFactory.php 代码。我在文件中放了一个 dd() 语句,看看它是否会停止,我得到同样的错误。我也在 Eloquent\Factory 文件中放了一个,它甚至没有调用加载函数来包含工厂文件夹中的文件。
我什至使用以下命令运行 php artisan tinker:
>>> factory('\App\User')->make();
InvalidArgumentException 带有消息“无法找到名称为 [default] [\App\User] 的工厂。”
我得到同样的错误。不知道在哪里看这一点。任何帮助,将不胜感激。谢谢!
【问题讨论】:
看看这个laracasts.com/discuss/channels/testing/… 谢谢,我看了不少。我在数据库/工厂/文件夹中有我的 ModelFactory.php。它似乎并没有尝试从那里加载文件。我还在另一个项目上进行了 Laravel 5.3 的全新安装,它在那里运行良好。 【参考方案1】:好的,我想通了。
在我的 app.php 中,我使用了以下服务提供商:
'Ccovey\ODBCDriver\ODBCDriverServiceProvider',
我切换回默认的:
'Illuminate\Database\DatabaseServiceProvider',
现在可以使用了!
【讨论】:
漂亮,谢谢!是时候切换到 sybase 了 :) ***.com/a/32555727/4233593以上是关于出现错误:InvalidArgumentException:无法找到名称为 [default] [App\User] 的工厂的主要内容,如果未能解决你的问题,请参考以下文章