我有一些go测试,我想更新以使用Ginkgo进行BDD样式测试。问题是,服务器使用stdout和stderr进行日志记录,许多测试使用Go内置的“Example”测试框架,如下所示:
import (
"fmt"
)
func ExampleConsoleLog() {
fmt.Printf("Testing %d, %d, %d: %s\n", 1, 2, 3, "mike check")
// Output:
// Testing 1, 2, 3: mike check
}
我想使用Ginkgo和Gomega断言这些打印到stdout,但是没有内置的匹配器可以告诉我这样做。 Gomega确实提供了gbytes
包,但是没有关于如何将gbytes.Buffer“附加”到stdout或stderr的文档。我可以使用自定义匹配器吗?
答案 0 :(得分:0)
您可以编译二进制文件并启动它&通过gexec
和gbytes
测试其输出:
http://onsi.github.io/gomega/#gexec-testing-external-processes
如果您正在尝试测试特定函数的输出(不编译和启动外部库),最简单的方法可能是注入io.Writer
然后传入gbytes
} 缓冲。还有其他选择,虽然它们有点不优雅:In Go, how do I capture stdout of a function into a string?