2016-01-25 33 views
1

我有Spring MVC的URL在接口定義(只是爲了保持常量),如:正則表達式替換春@RequestMapping URL @PathVariable值

String URL_X = "/my-url/{id:[0-9]*}"; 
String URL_Y = "/my-url/{id:[0-9]*}/blah-blah"; 

我有我的測試,更換變量的方法一個URL:

private static final String REGEX_PARAMETROS_DA_URL = "(\\{[^\\}]*\\})"; 
    protected String replaceParametersOnURL(String urlSpring, String... params) { 
     String urlAtual = urlSpring; 
     for (String parametro : params) { 
      urlAtual = urlAtual.replaceFirst(REGEX_PARAMETROS_DA_URL, parametro); 
     } 
     return urlAtual; 
    } 

我就是用這個正則表達式:(\{[^\}]*\})相匹配的變量並更換。 但現在我有一些網址的有{}它,我無法找到正確的正則表達式與我的價值來替代該變量。

是否有替換PathVariable值或任何人都可以幫我這個正則表達式在春天的任何方法?

鑑於此URL,例如:

/pessoajuridica/{cnpj:[0-9]{14}}-{slug:[a-zA-Z0-9-]+}/sancoes/resumo 

的比賽必須是:{cnpj:[0-9]{14}}{slug:[a-zA-Z0-9-]+}

+1

有你拿了看看Spring MVC的測試文檔[服務器執行請求(http://docs.spring.io/spring-framework/docs/ 3.2.0.BUILD-SNAPSHOT /參考/ htmlsingle /#彈簧-MVC測試 - 服務器 - 執行 - 請求) – nbsp

+0

'(\ {*?\} +)'..? –

+0

@Thomas這解決了這個問題的specifica,但如果我發現了一個更復雜的正則表達式像{CNPJ:[0-9] {14} [A-Z]}它不會工作! =/ – renanlf

回答

1

感謝@Matthew。我還沒有注意到,彈簧試驗本身能做到這一點!

所有我需要做的是:

mockMvc.perform(get("/pessoajuridica/{cnpj:[0-9]{14}}-{slug:[a-zA-Z0-9-]+}/sancoes/resumo", var1, var2)) ... 
+1

高興能幫上忙 – nbsp