[英]perl test suite for API
為什么不將API調用包裝成小函數(例如函數沒有,但API調用),然后使用Test::MockObject
或類似方法根據需要在測試中模擬這些函數?
這樣會更好,因為您可以使用測試來測試API的不同結果(失敗,身份驗證失敗等等)
我在我的文檔中明確表示,如果沒有API密鑰,我的模塊就沒用了,並且如果密鑰不存在,則使用skip:{}構造Test :: More來跳過所有測試。 你可以選擇太bail_out而不是跳過。
只需確保您的文檔解釋如何將API密鑰傳遞給模塊。
我處理這類事情的通常方法是需要一個環境變量才能運行測試套件。 環境變量將包含有用的信息(例如API密鑰,要連接的主機名等)
這是一個如何在測試文件中處理這類事情的示例。 我們將它用於MongoDB發行版,以檢查是否有可用的服務器運行:
BEGIN {
eval {
my $host = exists $ENV{MONGOD} ? $ENV{MONGOD} : 'localhost';
$conn = MongoDB::MongoClient->new( host => $host, ssl => $ENV{MONGO_SSL} );
};
if ( $@ ) {
plan skip_all => $@;
exit 0;
}
};
所有這一切都是嘗試連接到MONGOD
環境變量(或其他localhost)中指定的主機。如果不能,它會跳過所有測試並告知原因。 跳過仍然算作非故障,因此如果沒有可用的測試服務器,它將不會阻止模塊的安裝。
我在.pm文件中有這個代碼,我在分發中的每個.t文件中use
它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.