特性测试laravel中的静态模型类为空

特性测试laravel中的静态模型类为空,laravel,phpunit,Laravel,Phpunit,我在我的feature文件夹中有这个测试,我已经在类的顶部导入了模型,但它一直失败,我认为$event是空的 namespace Tests\Feature\Events; use App\Models\Event; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; class EventManagementTest extends TestCase { use RefreshDatabase

我在我的feature文件夹中有这个测试,我已经在类的顶部导入了模型,但它一直失败,我认为$event是空的

namespace Tests\Feature\Events;

use App\Models\Event;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class EventManagementTest extends TestCase
{
    use RefreshDatabase;

    /**
     * @test
     * @group event
     * A basic feature test to check event registration
     *
     */
    public function an_event_can_be_registered()
    {
        $this->withoutExceptionHandling();
        $response = $this->post('/events',$this->data());

        $event = Event::first();

        $this->assertCount(1,Event::all());
        $response->assertRedirect('/events/' . $event->event_id);
    }

    private function data()
    {
        return[
            'event_title'       => 'Internet Businesses',
            'event_location'    => 'Milad Tower',
            'event_description' => 'In this event Amin will present you the most recent methods in Internet Businesses',
            'event_start_date'  => '2020-06-01',
            'event_end_date'    => '2020-06-05',
        ];
    }
...
}
结果如下:

失败测试\功能\事件\事件管理测试✕ 可以注册一个事件

测试:1次失败

断言两个字符串相等失败。 ....

---期望

+++实际的

@@@@

-''

+''

这两个URI是不同的,我认为这是因为$event为null,我不知道为什么

更新:我已添加路线和控制器:

Route::post('/events','Web\EventsController@store');
控制器是:

public function store(){
        $event = Event::create($this->validateRequest());
        return redirect('/events/'.$event->event_id);
 }

protected function validateRequest(){
        return request()->validate([
            'event_title'       => 'required',
            'event_location'    => 'required',
            'event_description' => 'required',
            'event_start_date'  => 'required',
            'event_end_date'    => 'required',
        ]);
 }

您不使用标准主id列,因此需要在模型中定义它。如果未定义,则不会将其设置为
create()


我们能看看你要打的路线吗?@mrhm当然!我已经更新了问题,您的事件模型看起来如何?@mrhn刚刚保护了事件ID,如:protected$guarded=['event_ID'];
class Event extends Model {
    protected $primaryKey = 'event_id';
}