在PHP功能测试Laravel-8中找不到工厂

在PHP功能测试Laravel-8中找不到工厂,php,phpunit,laravel-8,Php,Phpunit,Laravel 8,只是在玩laravel-8单元测试。我扩展了基本的测试用例,并认为可以使用laravels工厂方法。我检查了composer.json,工厂正在加载 我正在尝试运行此特定测试,但未找到任何想法: <?php namespace Tests\Feature\Http\Controllers\Auth; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\WithFaker

只是在玩laravel-8单元测试。我扩展了基本的测试用例,并认为可以使用laravels工厂方法。我检查了composer.json,工厂正在加载

我正在尝试运行此特定测试,但未找到任何想法:

<?php

namespace Tests\Feature\Http\Controllers\Auth;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\User;

class LoginControllerTest extends TestCase
{
    use RefreshDatabase;
    /** @test */
    public function login_authenticates_and_redirects_user()
    {
        $user = factory(User::class)->create();

        $response = $this->post(route('login'), [
            'email' => $user->email,
            'password' => 'password'
        ]);

        $response->assertRedirect(route('home'));
        $this->assertAuthenticatedAs($user);
    }
}

在升级到laravel-8的发行说明中显示:

“Laravel的模型工厂功能已完全重写以支持类,与Laravel 7.x风格的工厂不兼容。”

因此,为了让它发挥作用,我使用了:

$user = \App\Models\User::factory(User::class)->make();
  • 在laravel上,8个型号位于“App\models\”
  • 它改变了工厂的工作方式。见
  • 所以,应该是这样的:

    <?php
    
    namespace Tests\Feature\Http\Controllers\Auth;
    
    use Illuminate\Foundation\Testing\RefreshDatabase;
    use Illuminate\Foundation\Testing\WithFaker;
    use Tests\TestCase;
    use App\Models\User;
    
    class LoginControllerTest extends TestCase
    {
        use RefreshDatabase;
        /** @test */
        public function login_authenticates_and_redirects_user()
        {
            $user = User::factory->create();
    
            $response = $this->post(route('login'), [
                'email' => $user->email,
                'password' => 'password'
            ]);
    
            $response->assertRedirect(route('home'));
            $this->assertAuthenticatedAs($user);
        }
    }
    

    应该是
    User::factory()->make()
    
    <?php
    
    namespace Tests\Feature\Http\Controllers\Auth;
    
    use Illuminate\Foundation\Testing\RefreshDatabase;
    use Illuminate\Foundation\Testing\WithFaker;
    use Tests\TestCase;
    use App\Models\User;
    
    class LoginControllerTest extends TestCase
    {
        use RefreshDatabase;
        /** @test */
        public function login_authenticates_and_redirects_user()
        {
            $user = User::factory->create();
    
            $response = $this->post(route('login'), [
                'email' => $user->email,
                'password' => 'password'
            ]);
    
            $response->assertRedirect(route('home'));
            $this->assertAuthenticatedAs($user);
        }
    }