2016-02-13 44 views
3

我正在製作一個模塊,我打算在CPAN上分發這個公共API的客戶端庫。如何測試需要擁有用戶憑據的CPAN包

該API需要API證書(client_id/secret),我不確定最佳實踐是如何針對具有此證書的分發版運行Perl測試。

我是否:

  • 創建一個虛擬帳戶的API,希望別人不惹它?
  • 嘲笑請求和響應? < - 並不贊成這一點,因爲我不認爲這是一個好主意,嘲笑HTTP事務的API客戶端庫
  • 不考...:S
+0

你寫了一些測試嗎?如果沒有,你見過[perl的首選測試框架上的這個問題](http://stackoverflow.com/questions/2876091/what-is-the-preferred-unit-testing-framework-for-perl)? – Kenney

回答

5

有測試預計憑據在環境變量中(或者如果它們很長或很複雜,則是一個配置文件)。如果沒有提供證書,請讓測試發出警告,提供有關使用憑證執行測試的說明。

use Test::More; 

unless ($ENV{MY_ID} && $ENV{MY_PWD}) { 
    BAIL_OUT "*** This module requires credentials. Pass them in the 
      MY_ID and MY_PWD environment variables, like 

       MY_ID=username MY_PWD=passwd make test"; 
} 

自動化測試系統(如什麼許多CPANTesters使用)絕不會配置一個模塊是測試之前,所以BAIL_OUT寄存器上CPAN測試器的測試結果爲「N/A」,而不是一個失敗。

+0

完美!謝謝你讓我知道 :) – a7omiton

0

我不這麼認爲,對於常見的測試來說這是一個很好的主意,可以由cpan-testers自動運行,也可以在模塊安裝中運行。

我想你應該把你的測試移動到xt目錄(作者測試),這個目錄只能由你運行。是的,最好的方式來傳輸憑據是通過ENV,因爲mob建議。

相關問題