gpt4 book ai didi

database - 如何模拟 ping 命令

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:26 25 4
gpt4 key购买 nike

我正在使用 https://github.com/DATA-DOG/go-sqlmock并尝试模拟与数据库的连接。

现在,我需要模拟一个 ping 命令(用于负载平衡目的)。但是,我找不到有关如何执行此操作的任何信息。

比如我想写一个这样的测试

    db, mock, _ := sqlmock.New()    
// ExpectPing does not exist, but it is there anything similar?
mock.ExpectPing().WillReturnError("mock error")

err := db.Ping()
if err==nil{
t.Fatal("there should have been an error")
}

此外,我需要将这个模拟对象注入(inject)到一个函数中。假设 New(*sql.DB) 输出一个新结构。所以它必须与 *sql.DB 结构兼容。出于这个原因,sqlmock 似乎是一个不错的选择。但是,我还没有找到模拟 ping 命令的方法。

有没有办法使用这个库来做到这一点?如果没有,是否有任何其他数据库/sql 模拟库可以做到这一点?

最佳答案

更新:自 2020 年 1 月 6 日起,此功能 has been addedgo-sqlmock,并包含在 v1.4.0 release 中.


原答案:

不,“没有相似之处”。 PingPingContext 方法取决于实现 Pinger 的驱动程序接口(interface),因此您不能通过例如期望“SELECT 1”或其他东西来模仿它。

already an issue要求添加这个。它似乎没有引起太多关注。我怀疑创建一个 PR(可能大约 3 行代码)会大大增加添加该功能的机会。


如果您的目标是使 Ping 失败,您应该能够通过连接到无效的数据库端点(使用或不使用 sqlmock)来模拟它。

关于database - 如何模拟 ping 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57723476/

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