在 Go 测试中访问日志
在 Go 测试中,验证函数的日志输出可能具有挑战性,尤其是当函数本身记录日志时
要捕获日志输出,常见的解决方案是在执行函数之前将默认日志输出重定向到缓冲区正在测试。
示例:
考虑以下 readByte 函数:
func readByte(/*...*/) { if err != nil { fmt.Println("ERROR") log.Print("Couldn't read first byte") return } }
要测试日志输出,我们可以使用以下方法在测试文件中:
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") }
在此示例中,我们:
以上是如何在 Go 测试中捕获和验证日志输出?的详细内容。更多信息请关注PHP中文网其他相关文章!