Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Pengesahan Penghitungan Bendera Baris Perintah Ujian Unit dalam Go?

Bagaimana untuk Pengesahan Penghitungan Bendera Baris Perintah Ujian Unit dalam Go?

Barbara Streisand
Lepaskan: 2024-11-17 10:57:02
asal
943 orang telah melayarinya

How to Unit Test Command Line Flag Enumeration Validation in Go?

Unit Menguji Bendera Baris Perintah dalam Go

Dalam Go, mentakrifkan bendera tersuai untuk aplikasi baris arahan memerlukan proses ujian yang teliti untuk memastikan mereka ketepatan. Satu senario khusus melibatkan pengesahan bahawa nilai bendera tertentu termasuk dalam penghitungan yang telah ditetapkan.

Kod untuk Ujian

<code class="go">var formatType string

const (
    text = "text"
    json = "json"
    hash = "hash"
)

func init() {
    const (
        defaultFormat = "text"
        formatUsage   = "desired output format"
    )

    flag.StringVar(&formatType, "format", defaultFormat, formatUsage)
    flag.StringVar(&formatType, "f", defaultFormat, formatUsage+" (shorthand)")
}

func main() {
    flag.Parse()
}</code>
Salin selepas log masuk

Pendekatan Pengujian

Untuk menguji unit gelagat yang diingini, kami boleh memanfaatkan kuasa fungsi flag.Var, yang membolehkan kami menentukan jenis tersuai dan peraturan pengesahan untuk bendera.

<code class="go">type formatType string

func (f *formatType) String() string {
    return fmt.Sprint(*f)
}

func (f *formatType) Set(value string) error {
    if len(*f) > 0 && *f != "text" {
        return errors.New("format flag already set")
    }
    if value != "text" && value != "json" && value != "hash" {
        return errors.New("Invalid Format Type")
    }
    *f = formatType(value)
    return nil
}</code>
Salin selepas log masuk

Dalam pelaksanaan jenis tersuai ini :

  • String() mengembalikan nilai semasa bendera dalam bentuk rentetan.
  • Set() mengemas kini nilai bendera dan memastikan ia berada dalam penghitungan yang dibenarkan.

Dengan menggunakan bendera Jenis format tersuai ini, proses ujian kini boleh mengesahkan kelakuan bendera apabila ditetapkan kepada pelbagai nilai.

Contoh Ujian

<code class="go">package main

import "testing"

func TestFormatType(t *testing.T) {
    tests := []struct {
        args   []string
        expect string
    }{
        {[]string{"-format", "text"}, "text"},
        {[]string{"-f", "json"}, "json"},
        {[]string{"-format", "foo"}, "Invalid Format Type"},
    }

    for _, test := range tests {
        t.Run(test.args[0], func(t *testing.T) {
            flag.Parse()
            if typeFlag != test.expect {
                t.Errorf("Expected %s got %s", test.expect, typeFlag)
            }
        })
    }
}</code>
Salin selepas log masuk

Dalam contoh ini:

  • TestFormatType berulang pada senarai ujian.
  • Setiap ujian menyediakan hujah baris perintah, menghuraikan bendera dan membandingkan nilai typeFlag yang terhasil dengan jangkaan keputusan.
  • Jika mana-mana ujian gagal, ia melaporkan ralat.

Atas ialah kandungan terperinci Bagaimana untuk Pengesahan Penghitungan Bendera Baris Perintah Ujian Unit dalam Go?. 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