Stati c класс модели является нулевым в функциональном тесте laravel - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть этот тест в моей папке возможностей, и я импортировал модель поверх класса, но она продолжает давать сбой, и я думаю, что $ event имеет значение null!

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',
        ];
    }
...
}

И вот результаты:

FAIL Tests \ Feature \ Events \ EventManagementTest ✕ событие может быть зарегистрировано

Тесты: 1 сбой

Не удалось подтвердить, что две строки равны. ....

--- Ожидаемый

+++ Фактический

@@ @@

- 'http://localhost/events/1 '

+' http://localhost/events '

эти два 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',
        ]);
 }

1 Ответ

1 голос
/ 10 апреля 2020

Вы не используете стандартный первичный столбец идентификатора, поэтому вам необходимо определить его в вашей модели. Если он не определен, он не будет установлен на create().

class Event extends Model {
    protected $primaryKey = 'event_id';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...