似乎不太可能,但有没有办法为以下重写规则生成一组单元测试:
RewriteRule ^/(user|group|country)/([a-z]+)/(photos|videos)$ http:/whatever?type=$1&entity=$2&resource=$3由此,我想生成一组表单的urls:
我不想只手工做一次的原因是,我希望有界的交互组(例如(user|group|country))能够在不手动更新测试的情况下扩展和维护覆盖率。
是否有重写规则或regex解析器可以这样做,或者我是手工完成的呢?
发布于 2012-11-17 16:16:39
如果您不介意侵入几行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)您需要编写一个包装器来解析源文件tokenise (提取)源模式,转义规则中的某些字符(例如"/“),并可能将规则分成更易于管理的部分,然后通过Genex展开,然后以所需的格式输出结果。
2)安装模块类型:cpan::Genex
https://stackoverflow.com/questions/6846379
复制相似问题