Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menangkap dan Memeriksa Log dalam Ujian Go?

Bagaimana untuk Menangkap dan Memeriksa Log dalam Ujian Go?

Barbara Streisand
Lepaskan: 2024-11-21 02:18:11
asal
387 orang telah melayarinya

How to Capture and Inspect Logs in Go Tests?

Menangkap dan Memeriksa Log dalam Ujian Go

Untuk mengesahkan log yang dijana oleh fungsi yang sedang diuji, adalah penting untuk menangkap dan memeriksanya. Ini boleh dicapai dengan mengubah hala output dan membandingkannya dengan nilai yang dijangkakan.

Dalam contoh yang disediakan, fungsi readByte mencetak mesej log ke output standard. Untuk menangkap mesej ini dalam ujian, kita boleh menggunakan bait. Penampan seperti yang ditunjukkan di bawah:

package main

import (
    "bytes"
    "fmt"
    "io"
    "log"
    "os"
    "testing"
)

func readByte(/*...*/) {
    // ...
    if err != nil {
        fmt.Println("ERROR")
        log.Print("Couldn't read first byte")
        return
    }
    // ...
}

func TestReadByte(t *testing.T) {
    var buf bytes.Buffer
    log.SetOutput(&buf)
    defer func() {
        log.SetOutput(os.Stderr)
    }()
    readByte()
    t.Log(buf.String())
}
Salin selepas log masuk

Penjelasan:

  • Log.SetOutput( baris &buf) mengubah hala keluaran log kepada pembolehubah buf.
  • Tangguhan log.SetOutput(os.Stderr) memastikan bahawa output log dipulihkan ke destinasi asalnya selepas ujian dijalankan.
  • Baris t.Log(buf.String()) mencetak log yang ditangkap ke log ujian .

Dengan memeriksa kandungan buf, anda boleh mengesahkan sama ada log yang dijangka dijana oleh fungsi readByte. Pendekatan ini membolehkan anda menguji output log tanpa mengubah suai kod fungsi yang sedang diuji.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap dan Memeriksa Log dalam Ujian 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