0

我有一些 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 来断言这些被打印到标准输出,但是没有内置的匹配器可以告诉我这样做。Gomega 确实提供了一个gbytes包,但没有关于如何将 gbytes.Buffer “附加”到 stdout 或 stderr 的文档。是否有我可以使用的自定义匹配器?

4

1 回答 1

0

您可以编译二进制文件并启动它并通过gexec和测试其输出:http gbytes: //onsi.github.io/gomega/#gexec-testing-external-processes

如果您尝试测试特定函数的输出(无需编译和启动外部库),最干净的方法可能是注入一个io.Writer然后传入您的gbytes缓冲区。还有其他选项,尽管它们有些不雅:在 Go 中,如何将函数的标准输出捕获到字符串中?

于 2015-01-03T15:33:16.390 回答