我的测试函数是
use RefreshDatabase;
public function create_route()
{
$user = \App\Models\User::factory()->create();
$this->actingAs($user)
->post(route('daily-logs.store'), [
'log' => 'Logging from create route test',
'day' => '2020-01-01',
]);
$this->assertDatabaseHas('daily_logs', [
'user_id' => $user->id,
'log' => 'Logging from create route test',
'day' => '2020-01-01 00:00:00',
]);
}
我的路线是这样的:
Route::post('/daily-logs', [DailyLogController::class, 'store'])->name('daily-logs.store');
我的控制器是这样的:
public function store(Request $request)
{
return DailyLog::create([
'user_id'=> $request->user()->id,
'log'=> $request->log,
'day'=> $request->day,
]);
}
如果我使用浏览器访问我的路由器,请求后,工作成功完成。但是,如果我使用我的测试功能,则显示错误信息。
怎么了?
2条答案
按热度按时间svujldwt1#
该操作似乎从未执行过。
在Laravel测试中,在HTTP调用上创建Assert是一个很好的做法。
例如:
这只会告诉您状态代码(例如,302与成功的状态代码不匹配)。
要进行调试,一种方法是转储响应:
qhhrdooz2#
兄弟,你得改变你的迁移。