交互测试 cli 提示时出现问题,扫描仪不等待用户输入

交互测试 cli 提示时出现问题,扫描仪不等待用户输入

php小编鱼仔发现,在进行交互测试时,有时会遇到问题。其中一个常见问题是,当使用命令行界面(CLI)进行交互时,扫描仪可能不会等待用户输入。这意味着当提示用户输入时,程序会立即继续执行,而不会等待用户的响应。这可能导致程序出现错误或无法正确执行。解决这个问题的方法是使用适当的技术或方法来确保扫描仪等待用户输入,以确保交互测试的顺利进行。

问题内容

我尝试编写一个测试来验证 cli 提示,模拟用户输入以响应某些程序输出。

如何让 scanner.scan 等待其余的写入?

到目前为止我所拥有的:

    b := &bytes.buffer{}    fmt.fprint(b, "0")    go func() {        time.sleep(1 * time.second)        for i := 1; i 

预期结果为:0123

实际结果为:0

我尝试了 io.pipe 的版本

r, w := io.Pipe()    fmt.Fprint(w, "0")    go func() {        time.Sleep(1 * time.Second)        for i := 1; i 

结果:致命错误:所有 goroutine 都在休眠 - 死锁!

解决方法

使用管道时,写入和读取是同步的。如果没有匹配的读取,写入就无法完成。将第一个写入移至 goroutine 中。并关闭管道的写入端,让扫描仪停止扫描。

    r, w := io.Pipe()    go func() {        defer w.Close()        fmt.Fprint(w, "0")        time.Sleep(1 * time.Second)        for i := 1; i 

登录后复制

以上就是交互测试 cli 提示时出现问题,扫描仪不等待用户输入的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2483541.html

(0)
上一篇 2025年3月4日 21:20:39
下一篇 2025年3月1日 15:02:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 链自定义 GRPC 客户端拦截器/DialOptions

    在进行网络通信时,自定义GRPC客户端拦截器和DialOptions是非常有用的工具。这些工具可以帮助开发者在GRPC客户端中添加额外的功能和处理逻辑,以满足特定的需求。php小编香蕉在本文中将介绍如何使用这些工具来定制和优化GRPC客户端…

    2025年3月4日
    100
  • Go 小时转换算法未正确转换

    php小编新一今天要给大家介绍的是Go语言中的一个问题,即“Go 小时转换算法未正确转换”。在Go语言中,时间转换是一个常见的操作,但是在某些情况下,小时转换的结果可能会出现错误。本文将详细解释这个问题的原因,并提供解决方案,帮助开发者避免…

    2025年3月4日
    200
  • 是否可以编写一个约束来排除某种类型?

    php小编草莓给您带来了一篇关于编写约束来排除某种类型的文章。在PHP中,我们可以使用类型约束来限制函数或方法的参数类型,但是否可以编写一个约束来排除某种类型呢?答案是肯定的。通过使用“!”操作符,我们可以在类型约束中排除某种类型,从而实现…

    2025年3月4日
    200
  • Golang sqlx 将多对多连接的右侧转换为数组

    php小编西瓜在这篇文章中将为大家介绍Golang sqlx如何将多对多连接的右侧转换为数组。Golang是一种强大的编程语言,而sqlx是一个流行的Golang数据库工具。在使用sqlx进行多对多连接时,我们经常需要将右侧的结果转换为数组…

    2025年3月4日
    200
  • 怎么在链接中写链接

    在编写文章或者在网页中添加链接时,链接的正确写法是非常重要的。链接的正确写法可以提高用户体验,增加文章的可读性。在链接中写链接的方法有很多,下面我将为大家介绍一些常用的写法和注意事项。首先,可以使用HTML标签来创建链接。在标签内,使用hr…

    2025年3月4日
    200
  • 无法正确地将表单序列化为 json

    php小编香蕉为您介绍一种常见问题:无法正确地将表单序列化为json。在开发中,我们经常需要将表单数据以json格式传递给后端处理。然而,有时候我们会遇到一些问题,比如提交的数据无法正确地转换成json格式。这可能是由于表单中包含了特殊字符…

    2025年3月4日
    200
  • go http.ListenAndServe 不等待连接看起来像是退出

    php小编柚子在这篇文章中将为大家介绍一个有趣而常见的问题,即在使用Go语言中的http.ListenAndServe函数时,为什么看起来像是没有等待连接就退出了。这个问题可能会让人困惑,但其实是由于Go语言的并发特性造成的。在接下来的内容…

    2025年3月4日
    200
  • 如何在 Gorm 中使用 Raw() 进行 Preload() ?

    php小编鱼仔将为您介绍如何在 Gorm 中使用 Raw() 进行 Preload()。Gorm是一个强大的Go语言ORM库,提供了许多便捷的方法来进行数据库操作。在某些情况下,我们可能需要使用原生的SQL语句进行查询,同时还想使用Prel…

    2025年3月4日
    200
  • 如何使用 docker-compose 连接到 CockroachDB?

    php小编草莓将为大家介绍如何使用docker-compose连接到CockroachDB。Docker-compose是一个用于定义和运行多个Docker容器的工具,而CockroachDB是一个分布式的关系型数据库管理系统。通过使用do…

    2025年3月4日
    200
  • 在 Goroutine 中等待管道 io.Copy 时发生死锁

    在 Goroutine 中等待管道 io.Copy 时发生死锁是一个常见的问题。当我们在一个 Goroutine 中等待 io.Copy 的完成时,如果管道没有被正确地关闭,就会导致死锁。这种情况下,Goroutine 会一直在等待数据,而…

    2025年3月4日
    200

发表回复

登录后才能评论