【问题标题】:Is there any way to generate a set of JWebUnit tests from an apache rewrite config?有没有办法从 apache 重写配置生成一组 JWebUnit 测试?
【发布时间】:2012-11-18 00:56:10
【问题描述】:

似乎不太可能,但有没有办法为以下重写规则生成一组单元测试:

RewriteRule   ^/(user|group|country)/([a-z]+)/(photos|videos)$       http:/whatever?type=$1&entity=$2&resource=$3

由此我想生成一组如下形式的 url:

  • /user/foo/photos
  • /用户/栏/照片
  • /group/baz/videos
  • /国家/地区/酒吧/照片
  • 等等……

我不想只手动执行一次的原因是我希望有界交替组(例如(user|group|country))能够在不手动更新测试的情况下扩大和保持覆盖范围。

是否有重写规则或正则表达式解析器可以做到这一点,还是我手动完成?

【问题讨论】:

    标签: apache unit-testing mod-rewrite


    【解决方案1】:

    如果你不介意修改几行 Perl,那么有一个包,Regexp::Genex,你可以使用它来生成接近你需要的东西,例如

    # perl -MRegexp::Genex=:all -le 'print for strings(qr/\/(user|group|country)\/([a-z]+)\//)'
    /user/dxb/
    /user/dx/
    /user/d/
    /group/xd/
    /group/x/
    #  perl -MRegexp::Genex=:all -le 'my $re=qr/\/(user|group|country)\/([a-z]+)\/(phone|videos)/;$Regexp::Genex::DEFAULT_LEN = length $re;print for strings($re)'
    /user/mgcgmccdmgdmmzccgmczgmzzdcmmd/phone
    /user/mgcgmccdmgdmmzccgmczgmzzdcmm/phone
    /user/mgcgmccdmgdmmzccgmczgmzzdcm/phone
    /user/mgcgmccdmgdmmzccgmczgmzzdc/phone
    
    ...
    
    /group/gg/videos
    /group/g/phone
    /group/g/videos
    /country/jvmmm/phone
    /country/jvmmm/videos
    /country/jvmm/phone
    /country/jvmm/videos
    /country/jvm/phone
    /country/jvm/videos
    /country/jv/phone
    /country/jv/videos
    /country/j/phone
    /country/j/videos
    #
    

    注意:

    1) 您需要编写一个包装器来解析源文件,标记(提取)源模式,转义规则中的某些字符,例如“/”,并可能将您的规则拆分为更易于管理的部分,然后通过 Genex 进行扩展,然后以所需的格式输出结果。

    2) 安装模块类型:cpan Regexp::Genex

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2014-09-28
      相关资源
      最近更新 更多