这是一个小脚本。
package bashutil
import (
"fmt"
"github.com/nsf/termbox-go"
)
func Center(s string) {
if err := termbox.Init(); err != nil {
panic(err)
}
w, _ := termbox.Size()
termbox.Close()
fmt.Printf(
fmt.Sprintf("%%-%ds", w/2),
fmt.Sprintf(fmt.Sprintf("%%%ds", w/2+len(s)/2), s),
)
}
我可以对其进行单元测试吗?我该如何测试?我认为这是一个废话测试,片段很少。但是,...如果我要测试此代码怎么办?如何测试输出是否等于预期?
我可以测试一下fmt会打印出我期望的样子吗?
最佳答案
什么是“测试”?
我认为“测试”需要对函数的输出产生影响。
您函数的输出为Stdout,因此我们需要首先获取输出。
我们可以简单地做到这一点:
func TestCenter(*testing.T) {
stdoutBak := os.Stdout
r, w, _ := os.Pipe()
os.Stdout = w
Center("hello")
w.Close()
os.Stdout = stdoutBak
// Check output as a byte array
outstr, _ := ioutil.ReadAll(r)
fmt.Printf("%s", outstr)
}
因此,您可以检查输出格式,拼写等。
关于unit-testing - 如何对文本显示在屏幕中央进行单元测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42096238/