gpt4 book ai didi

unit-testing - 我如何对文本将出现在屏幕中央进行单元测试?

转载 作者:数据小太阳 更新时间:2023-10-29 03:25:51 25 4
gpt4 key购买 nike

这是一个小脚本。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com