为实现接口的对象创建可测试的示例

时间:2019-08-30 05:28:59

标签: go testing

根据GoLang文档,您可以为一段代码编写示例。 有关更多信息,请参见https://blog.golang.org/examples

我有以下方法:

// StdOutSink is a 'log.Sink' implementation which logs to 'StdOut'.
type StdOutSink struct {
}

// Write prints a message to 'StdOut'.
func (s StdOutSink) Write(msg message) {
    fMsg := fmtMsg(msg)

    fmt.Printf("%v\n", fMsg)
}

我想为此提供一个可测试的示例,该示例通过以下代码完成:

// Ensures the correct implementation of the 'Write' method.
func ExampleWrite() {
    // Arrange.
    s := new(StdOutSink)

    // Act.
    s.Write(createMessage(traceS, "Message"))
    s.Write(createMessage(debugS, "Message"))
    s.Write(createMessage(infoS, "Message"))
    s.Write(createMessage(warnS, "Message"))
    s.Write(createMessage(errorS, "Message"))
    s.Write(createMessage(fatalS, "Message"))

    // Output:
    // [TRACE]: Message
    // [DEBUG]: Message
    // [INFO]: Message
    // [WARNING]: Message
    // [ERROR]: Message
    // [FATAL]: Message
}

// PRIVATE: createMessage returns a 'log.message' with the given severity and text.
func createMessage(s severity, txt string) message {
    msg := new(message)
    msg.severity = s
    msg.text = txt

    return *msg
}

这一切正常,正在执行测试,但是go-vet收到以下消息:

`ExampleWrite refers to unknown identifier: Write`

我应该如何命名示例方法,以便将其链接到函数func (s StdOutSink) Write(msg message)

0 个答案:

没有答案