我试图添加一个Factory,以帮助增加某些控制器上的测试覆盖率。到目前为止,我一直在使用工厂,没有任何问题,在这里我找不到发出此消息的原因,而且我无法弄清与其他工厂的不同之处,它们运作良好。
错误是:

1) GuestBusinessControllerTest::it_presents_a_domain_home
InvalidArgumentException: Unable to locate factory with name [default] [App\Models\Domain].

我引用了以下有用的文件:
我的Controller Test尝试使用Factory(通过特征)
<?php

use Illuminate\Foundation\Testing\DatabaseTransactions;

class GuestBusinessControllerTest extends TestCase
{
    use DatabaseTransactions;
    use CreateBusiness, CreateDomain;

    // ...

    /** @test */
    public function it_presents_a_domain_home()
    {
        $domain = $this->createDomain();

        // ...
    }
}

trait using the factory
<?php

use App\Models\Domain;

trait CreateDomain
{
    private function createDomain($overrides = [])
    {
        return factory(Domain::class)->create($overrides);
    }

    // ...

}

factory definition
// ...

$factory('App\Models\Domain', function ($faker) {
    return [
        'slug'     => str_slug($faker->sentence(3)),
        'owner_id' => 'factory:App\Models\User',
    ];
});

// ...

我正在使用"laracasts/testdummy": "~2.0"
// ...

    "require-dev": {
        // ...
        "laracasts/testdummy": "~2.0",
        // ...
    },

// ...

旁注:

是的,我做了composer dump-autoload(否则,错误消息将有所不同)
我试图在另一个帮助文件和dump-autoload中定义工厂。 (以防万一)
我还尝试重命名模型,以为Domain可能是一个有冲突的关键字,但这似乎不是问题。

我该如何解决这个错误?

最佳答案

发现问题

自从我使用tests/factories/factories.php以来,我一直以为我正在使用文件laracasts/testdummy

事实证明(可能是因为迁移到L5.1以来,但不确定),我现在使用的是database/factories/ModelFactory.php,我有一天用旧工厂进行了更新,但从未删除过tests/factories/factories.php,因此,对其进行了新的更改进行编辑一文不值。

现在,我已经删除了该文件,并保留了一个出厂文件,该文件保留了Laravel 5.1解决方案。

09-25 16:05