我在Laravel 5.1中工作,在尝试运行测试时我一直收到此错误:
invalidArgumentException:无法找到名称为[factory]的工厂 [应用\用户]
这是我的测试代码:
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文件中,它甚至没有调用load函数来包含文件在factories文件夹中。
我甚至使用以下命令运行php artisan tinker:
>>> factory('\App\User')->make();
InvalidArgumentException,显示消息“无法找到名称为[factory] [\ App \ User]的工厂。”
我得到同样的错误。不知道在哪里看这一点。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
好的,我明白了。
在我的app.php中,我使用的是以下服务提供商:
'Ccovey\ODBCDriver\ODBCDriverServiceProvider',
我切换回默认值:
'Illuminate\Database\DatabaseServiceProvider',
立即行动!