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

Bagaimana untuk Menguji Hantaran Hujah dalam Go dengan Betul?

Mary-Kate Olsen
Lepaskan: 2024-12-15 06:48:14
asal
869 orang telah melayarinya

How to Correctly Test Argument Passing in Go?

Menguji Hujah Lulus di Golang

Pertimbangkan kod berikut:

package main

import (
    "flag"
    "fmt"
)

func main() {
    passArguments()
}

func passArguments() string {
    username := flag.String("user", "root", "Username for this server")
    flag.Parse()
    fmt.Printf("Your username is %q.", *username)

    usernameToString := *username
    return usernameToString
}
Salin selepas log masuk

Kami menyampaikan hujah kepada yang disusun kod menggunakan arahan:

./args -user=bla
Salin selepas log masuk

Ini memaparkan perkara berikut output:

Your username is "bla"
Salin selepas log masuk

Pendekatan Pengujian

Untuk mengelakkan penyusunan dan pelaksanaan manual, kami berhasrat untuk menulis ujian yang mengesahkan kelulusan hujah. Kami mencipta fungsi ujian:

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)
    }
}
Salin selepas log masuk

Masalah

Apabila kami menjalankan ujian, kami menghadapi hasil yang tidak dijangka:

Your username is "root".Your username is "root".--- FAIL: TestArgs (0.00s)
    args_test.go:15: Test failed, expected: 'bla', got:  'root'
FAIL
coverage: 87.5% of statements
FAIL    tool    0.008s
Salin selepas log masuk

hujah "bla" tidak dihantar ke fungsi, mengakibatkan "root" seperti yang dipaparkan nama pengguna.

Penyelesaian

Isunya terletak pada penetapan os.Args. Argumen pertama dalam os.Args ialah laluan ke executable itu sendiri. Untuk membetulkannya, kami mengubah suainya seperti berikut:

os.Args = []string{"cmd", "-user=bla"}
Salin selepas log masuk

Selain itu, adalah amalan yang baik untuk menyimpan keadaan os.Args asal dan memulihkannya selepas ujian untuk ujian lain yang bergantung pada hujah yang betul.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan