如何测试需要具有用户凭据的CPAN包

a7o*_*ton 3 perl automated-tests unit-testing

我正在制作一个我计划在CPAN上分发的模块,这是一个公共API的客户端库.

API需要API凭据(client_id/secret),我不确定在为具有此类凭据的分发运行Perl测试方面最佳做法是什么.

我是:

  • 使用API​​创建一个虚拟帐户,并希望其他人不要乱用它?
  • 嘲笑请求和回复?< - 不赞成这一点,因为我认为模拟API客户端库的HTTP事务不是一个好主意
  • 不测试...:S

mob*_*mob 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";
 }
Run Code Online (Sandbox Code Playgroud)

自动化测试系统(例如许多CPANTes用户)在测试之前永远不会配置模块,因此BAIL_OUT将测试结果寄存在CPAN测试仪上作为"N/A"而不是失败.