2016-05-08 87 views
0

據我所知,測試廚房後面的序列與Chefspec測試廚房集成測試:測試菜譜與依賴

創建節點>收斂食譜>運行測試

什麼是創建一個測試,假設一個最好的做法強大的外部依賴性?

一個例子是卡夫卡食譜https://supermarket.chef.io/cookbooks/kafka。您可能知道,Kafka是一個依賴於Zookeeper的消息傳遞代理應用程序,它是一個獨立的應用程序,它是消息中心。

繼顧慮分開後,Kafka食譜不包括Zookeeper - 它可以安裝在同一個主機或不同的機器上。

然而,爲了做一個簡單的驗證,如果卡夫卡正在工作(即創建一個簡單的消息),您需要運行一個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後運行這三個命令,是有辦法末梢該外部服務器(本地主機:2181以上部分)?

謝謝!

回答

0

答案的兩個部分:第一個ChefSpec用於單元測試,與測試廚房和集成測試無關。其次,您需要制定最低限度的測試配方來安裝單節點ZK服務器並將其用於集成測試。一般來說,您可以通過將測試菜譜放在test/cookbook下,然後使用path源將其添加到您的Berksfile中。你可以使用「真正的」ZK食譜,或者你可以使用更簡單,更專注的東西。只是測試極簡主義的一個例子,請參閱my MongoDB recipe。在這種情況下,你可以使用類似於ZK的東西。

+0

非常感謝您的回答,以及對應用食譜的讚譽!我正在與.Net項目合作,看看我是否可以使用您的食譜,而不是我目前使用的PowerShell命令序列。 關於測試,我寧願避免將測試中的依賴性配方包含在主要配方中。不過,我會嘗試做測試/食譜,看看它是否能解決問題。儘快更新。乾杯! –