У меня есть этот тест в моей папке возможностей, и я импортировал модель поверх класса, но она продолжает давать сбой, и я думаю, что $ 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',
]);
}