我正在编写一个小型 ruby 应用程序,它通过etcd-ruby gem 使用 etcd 来协调整个集群的活动。
我遇到的一个问题是如何为其编写规范。
我的第一种方法是尝试在客户端级别模拟 etcd 调用,但是这是次优的,因为客户端返回的响应与元数据非常复杂。我曾考虑在 etcd 客户端上编写一个包装器来剥离元数据并使模拟方法更容易,但问题是算法有时确实依赖于这些元数据,因此抽象变得非常容易泄漏,并且只是一个痛苦的间接层。
另一种方法是使用 VCR 记录实际请求。这样做的好处是允许规范在没有 etcd 的情况下运行,但它会使初始化状态和管理盒式磁带变得一团糟。
这让我想到了我的问题。作为一个单独的节点,etcd 足够快,直接在测试中使用它并且根本不尝试存根它似乎是最简单和最直接的。这里唯一的问题是我看不到任何简单的方法来清除测试之间的键空间。不允许对根键进行递归删除。此外,这不会重置索引。我检查了etcd-ruby
gem 规格,它似乎通过使用基于 uuid 的键来绕过这个问题,这样键就不会发生冲突。我想这是一种可行的方法,但有更好的方法吗?