是否可以模拟Gomega的示例测试?

时间:2014-12-23 01:42:41

标签: testing go stdout ginkgo

我有一些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的文档。我可以使用自定义匹配器吗?

1 个答案:

答案 0 :(得分:0)

您可以编译二进制文件并启动它&通过gexecgbytes测试其输出: 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?