0

我了解测试厨房遵循顺序

创建节点 > 收敛说明书 > 运行测试

创建假设强外部依赖性的测试的最佳实践是什么?

一个例子是 Kafka 食谱https://supermarket.chef.io/cookbooks/kafka。您可能知道,Kafka 是一个依赖于 Zookeeper 的消息代理应用程序,Zookeeper 是一个单独的应用程序,即消息中心。

在适当分离关注点之后,Kafka 食谱不包括 Zookeeper——它可以安装在同一主机或不同的机器上。

然而,为了简单验证 Kafka 是否正常工作(即创建简单消息),您需要运行 Zookeeper 服务器。

例如,测试可以在安装后运行这三个命令

# creates a message topic
bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic test

# lists existing message topics
bin/kafka-list-topic.sh --zookeeper localhost:2181

# sends a message to this machine
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

使用 Chefspec,有没有办法存根这个外部服务器(上面的 localhost:2181 部分)?

谢谢!

4

1 回答 1

0

答案分为两部分:首先 ChefSpec 用于单元测试,与 Test Kitchen 和集成测试无关。其次,您需要制作一个最小的测试配方来安装 1 节点 ZK 服务器并将其用于集成测试。通常,您可以通过将测试说明书放在下面来做到这一点test/cookbook,然后将其添加到您的 Berksfile 和path源文件中。您可以使用“真正的” ZK 食谱,或者您可以使用更简单、更专业的东西。只是用于测试的极简主义示例,请参阅我的 MongoDB 配方。在这种情况下,您可能可以对 ZK 使用类似的东西。

于 2016-05-08T22:48:17.130 回答