我正在尝试对cli应用程序进行功能测试,类似于这种方式。
当命令在命令提示符下询问一些输入时,我将它们放在文件中并将其设置为os.Stdin。
cmd := exec.Command(path.Join(dir, binaryName), "myArg")
tmpfile := setStdin("TheMasterPassword\nSecondAnswer\n12121212\n")
cmd.Stdin = tmpfile
output, err := cmd.CombinedOutput()
在setStdin刚刚创建TMPFILE,写在文件和返回字符串*os.File。
现在,我希望TheMasterPassword是第一个输入,并且它正在运行。但是对于第二个输入总是会得到Critical Error: EOF。
我用于询问和获取用户输入的功能:
func Ask(question string, minLen int) string {
reader := bufio.NewReader(os.Stdin)
for {
fmt.Printf("%s: ", question)
response, err := reader.ReadString('\n')
ExitIfError(err)
if len(response) >= minLen {
return strings.TrimSpace(response)
} else {
fmt.Printf("Provide at least %d character.\n", minLen)
}
}
}
您能帮我找出问题所在吗?非常感谢!
幕布斯7119047
相关分类