我正在尝试添加工厂以帮助增加某些控制器的测试覆盖率。到目前为止,我一直在使用工厂没有问题,在那里我没有找到这个消息的理由,我无法弄清楚与其他工厂有什么不同,这些工厂运作良好。
错误是:
1) GuestBusinessControllerTest::it_presents_a_domain_home
InvalidArgumentException: Unable to locate factory with name [default] [App\Models\Domain].
我引用有用的文件如下:
我的Controller Test尝试使用工厂(通过特性)
<?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();
// ...
}
}
<?php
use App\Models\Domain;
trait CreateDomain
{
private function createDomain($overrides = [])
{
return factory(Domain::class)->create($overrides);
}
// ...
}
// ...
$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
可能是一个有冲突的关键字,但这似乎不是问题。
我该如何解决这个错误?
答案 0 :(得分:4)
发现问题
因为我使用tests/factories/factories.php
,所以我一直在想我正在处理文件laracasts/testdummy
。
事实证明(可能是自从迁移到L5.1,但不确定),我现在使用database/factories/ModelFactory.php
,我有一天用我的旧工厂更新了,但从未删除tests/factories/factories.php
和因此,编辑它以换取新的变化毫无价值。
现在我已经删除了这个文件并保留了一个开箱即用的Laravel 5.1解决方案。