Bagaimana untuk Menangkap dan Mengesahkan Output Log dalam Ujian Go?

Mary-Kate Olsen
Lepaskan: 2024-11-16 16:48:03
asal
891 orang telah melayarinya

How to Capture and Verify Log Output in Go Tests?

Mengakses Log dalam Go Tests

Dalam ujian Go, mengesahkan output log fungsi boleh menjadi mencabar, terutamanya apabila fungsi itu sendiri log ralat secara langsung.

Untuk menangkap output log, penyelesaian biasa ialah mengubah hala output log lalai ke penimbal sebelum melaksanakan fungsi yang sedang diuji.

Contoh:

Pertimbangkan fungsi readByte berikut:

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

Untuk menguji output log, kita boleh menggunakan pendekatan berikut dalam fail ujian:

package main

import (
    "bytes"
    "testing"

    "github.com/stretchr/testify/assert"
)

func TestReadByte(t *testing.T) {
    var buf bytes.Buffer
    log.SetOutput(&buf)
    defer func() {
        log.SetOutput(os.Stderr)
    }()
    readByte()
    output := buf.String()
    assert.Contains(t, output, "Couldn't read first byte")
}
Salin selepas log masuk

Dalam contoh ini , kita:

  • Buat penimbal untuk menangkap output log.
  • Ubah hala output log lalai ke penimbal menggunakan log.SetOutput(&buf).
  • Laksanakan fungsi readByte.
  • Pulihkan output log lalai kepada os.Stderr menggunakan defer func() untuk mengelakkan menjejaskan ujian berikutnya.
  • Tegaskan mesej log yang dijangka menggunakan testimoni/assert.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap dan Mengesahkan Output 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