Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Hantaran Hujah dengan Betul di Golang?

Bagaimana untuk Menguji Hantaran Hujah dengan Betul di Golang?

Susan Sarandon
Susan Sarandonasal
2024-12-07 17:34:13850semak imbas

How to Correctly Test Argument Passing in Golang?

Menguji Penghantaran Hujah di Golang

Dalam Golang, hujah boleh dihantar ke fungsi menggunakan bendera. Untuk menguji kelulusan hujah, ujian boleh ditulis yang mensimulasikan penghantaran hujah baris arahan.

Masalahnya

Apabila menjalankan ujian berikut:

import (
    "os"
    "testing"
)

func TestArgs(t *testing.T) {
    expected := "bla"
    os.Args = []string{"-user=bla"}

    actual := passArguments()

    if actual != expected {
        t.Errorf("Test failed, expected: '%s', got:  '%s'", expected, actual)
    }
}

ujian gagal dengan mesej ralat yang menunjukkan bahawa hasil yang dijangkakan ("bla") tidak sepadan dengan keputusan sebenar ("root").

Penyelesaian

Masalah timbul kerana nilai pertama dalam os.Args ialah laluan ke executable itu sendiri. Untuk membetulkannya, kepingan os.Args harus dikemas kini untuk memasukkan kedua-dua boleh laku dan argumen:

os.Args = []string{"cmd", "-user=bla"}

Selain itu, os.Args ialah pembolehubah global, jadi adalah disyorkan untuk menyimpan keadaan asal dan pulihkannya selepas ujian untuk mengelakkan gangguan dengan ujian lain:

oldArgs := os.Args
defer func() { os.Args = oldArgs }()

Atas ialah kandungan terperinci Bagaimana untuk Menguji Hantaran Hujah dengan Betul di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn