我使用库gozk将我的应用程序与生产zookeeper服务器连接起来。我想测试应用程序是否创建了正确的节点,它们包含各种情况的正确内容,以及DataWatch和NodeWatch设置正确:
即应用程序执行的应该基于节点和数据更新。
我是否可以在单元测试期间创建和销毁模拟zookeeper服务器,具有人为创建新节点和设置节点内容的能力? 是否有不同于手动创建zookeeper服务器并使用它的方法?
已存在解决方案答案 0 :(得分:2)
我建议你将调用zookeeper的代码变成一个接口。
然后在测试期间,你在'mockZookeeperConn'对象中进行子操作,该对象只返回值,就像它真正连接到服务器一样(但返回值是硬编码的)
答案 1 :(得分:0)
@Ben Echols的答案非常好。
此外,您可以尝试" build constraints"。
您可以在real-zk和mock-zk代码上配置不同的构建标记。
例如,我们配置"产品"对于真实的zk代码和" mock"对于mock-zk代码。
因此,有两种方法可以运行单元测试:
go test -tags mock
如果没有zk env。 go test -tags product
如果有可用的zk env。