簡體   English   中英

我在項目 Laravel 中運行測試時遇到問題

[英]I am with problem to run test in project Laravel

我的測試 function 是這個

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');

我的 controller 是這樣的:

public function store(Request $request)
{
    return DailyLog::create([
        'user_id'=> $request->user()->id,
        'log'=> $request->log,
        'day'=> $request->day,
    ]);
}

如果我使用帶有請求發布的瀏覽器訪問我的路由器,則工作已成功完成。 但是,如果我使用我的測試 function,則會顯示一條錯誤消息。

在此處輸入圖像描述

怎么了?

似乎從未執行過該操作。

在 Laravel 測試中創建對 HTTP 調用的斷言是一種很好的做法。

例如

    $this->post(...)
        ->assertSuccessful(); // or assertRedirect(), assertStatus(), ...

這只會告訴您狀態代碼(例如 302 與成功狀態代碼不匹配)。

要調試,一種方法是轉儲響應:

    $this->post(...)
        ->dump();

$fillable = ['log','day','user_id'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM