2011-07-27 45 views
2

似乎不太可能,但有什麼辦法來產生以下重寫規則的一套單元測試:有什麼辦法來產生從Apache重寫配置一套JWebUnit的測試?

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

從這個我想生成一組形式的網址:

  • /用戶/富/照片
  • /用戶/酒吧/照片
  • /組/巴茲/視頻
  • /國家/酒吧/照片
  • etc ...

我不想僅僅手動做這個事情的原因是我想要有界的交替組(例如, (user|group|country)),以能夠成長和維護覆蓋,而無需更新手工測試。

是否有可能能夠做到這一點,還是我做手工重寫規則或正則表達式解析器?

回答

0

如果你不介意的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 Regexp :: Genex

相關問題