【发布时间】: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] 的工厂。”
我得到同样的错误。不知道在哪里看这一点。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
谢谢,我看了不少。我在数据库/工厂/文件夹中有我的 ModelFactory.php。它似乎并没有尝试从那里加载文件。我还在另一个项目上进行了 Laravel 5.3 的全新安装,它在那里运行良好。