特性测试laravel中的静态模型类为空
我在我的feature文件夹中有这个测试,我已经在类的顶部导入了模型,但它一直失败,我认为$event是空的特性测试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
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';
}