获取错误:InvalidArgumentException:无法找到名称为[factory] ​​[app \ User]的工厂

时间:2016-12-05 23:36:35

标签: laravel phpunit

我在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]的工厂。”

我得到同样的错误。不知道在哪里看这一点。任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

好的,我明白了。

在我的app.php中,我使用的是以下服务提供商:

'Ccovey\ODBCDriver\ODBCDriverServiceProvider',

我切换回默认值:

 'Illuminate\Database\DatabaseServiceProvider',

立即行动!