我有一些go测试,我想要更新以使用Ginkgo进行BDD风格的测试。问题是,服务器使用stdout和stderr进行日志记录,并且许多测试使用Go内置的“示例”测试框架,如下所示:
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“附加”到标准输出或标准错误的文档。有没有定制的匹配器可以用来做这个?
发布于 2015-01-03 23:33:16
您可以编译二进制文件并通过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?
https://stackoverflow.com/questions/27612983
复制相似问题