首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在Laravel 7找到工厂

无法在Laravel 7找到工厂
EN

Stack Overflow用户
提问于 2020-07-11 15:13:19
回答 2查看 1.1K关注 0票数 0

我正在为PHPunit做一个单元测试。守则是:

代码语言:javascript
运行
复制
<?php

namespace Tests\Unit;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use PHPUnit\Framework\TestCase;

class ThreadTest extends TestCase
{
    use DatabaseMigrations;



    public function test_a_thread_has_replies()
    {

        $thread = factory('App\Thread')->create();

        $this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $thread->replies);
    }
}

当我运行PHPUnit时,会得到以下错误:

InvalidArgumentException:无法找到App\Thread的工厂。

我有一个线程工厂:

代码语言:javascript
运行
复制
<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Thread;
use Faker\Generator as Faker;

$factory->define(Thread::class, function (Faker $faker) {
    return [
        'user_id' => factory(App\User::class),
        'title' => $faker->sentence,
        'body' => $faker->paragraph
    ];
});

如果我用在丁克的工厂,它就能正常工作。

对于其他类,我有类似的测试函数和工厂,这些都很好。

很可能我犯了一个很愚蠢的错误,但我找不到。

有什么建议吗?

致以亲切的问候,

HUbert

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-11 18:10:05

您正在扩展php单元testcase类。不会加载你的Laravel应用程序。您应该扩展Laravel提供的使用Tests\TestCase

在CLI上使用php make:test UserTest将创建一个适合于测试Laravel应用程序的正确模板的测试。

票数 4
EN

Stack Overflow用户

发布于 2022-10-19 08:43:50

对我有用的是用

代码语言:javascript
运行
复制
$factory->define(App\Model::class, function (Faker $faker) {
//return code here
}

而不是仅仅使用模型名称而不将APP\放在模型名称的前面

代码语言:javascript
运行
复制
$factory->define(Model::class, function (Faker $faker) {
//return code here
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62850919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档