Menguji Laluan Chi dengan Pembolehubah Laluan: Penyelesaian Masalah dan Penyelesaian
Dalam go-chi, akses pembolehubah laluan dalam laluan dipermudahkan oleh fungsi perisian tengah seperti ArtikelCtx. Apabila menguji laluan sedemikian, adalah penting untuk menetapkan pembolehubah laluan dalam konteks permintaan HTTP secara manual. Ini kerana konteks tidak diisi secara automatik oleh pakej httptest.
Masalah:
Untuk menguji laluan yang menggunakan pembolehubah laluan, permintaan ujian dibuat menggunakan httptest.NewRequest. Walau bagaimanapun, melaksanakan perisian tengah ArticleCtx semasa ujian mengembalikan ralat HTTP (Entiti Tidak Boleh Diproses), menunjukkan bahawa konteks pembolehubah laluan tidak tersedia.
Penyelesaian:
Penyelesaian terletak secara manual menambahkan parameter laluan pada konteks permintaan sebelum menyerahkannya kepada pengendali:
<code class="go">// Create a context with the path variable req := httptest.NewRequest("GET", "/articles/1", nil) rctx := chi.NewRouteContext() rctx.URLParams.Add("articleID", "1") // Set the RouteCtx in the request context req = req.WithContext(context.WithValue(req.Context(), chi.RouteCtxKey, rctx)) // Execute the handler with the modified request rec := httptest.NewRecorder() ArticleCtx(http.HandlerFunc(GetArticleID)).ServeHTTP(rec, req)</code>
Dengan menambahkan pembolehubah laluan pada konteks permintaan, perisian tengah ArticleCtx boleh mendapatkan ID artikel dengan betul, menyelesaikan ralat Entiti Tidak Boleh Diproses.
Amalan Terbaik Tambahan:
Atas ialah kandungan terperinci Cara Menguji Laluan Go-Chi dengan Pembolehubah Laluan: Menyelesaikan Ralat Entiti Tidak Dapat Diproses. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!