誤りは以下の2点かと思います。
- urlはString変数だと思いますが String.matchesの引数には正規表現を表すStringを指定します。
java.lang.String#matches
- 正規表現中に含まれる文字の中に正規表現で使用する文字が含まれる場合はエスケープする必要があります。今回のケースでは
/ ? $
がこれにあたります。
"/$companyId/people?c=$peopleId"
の中の$が変数展開とした場合
$companyId = 100
$peopleId = 1234
であった場合以下のコードで検証通ります。
java
1String url = "/100/people?c=1234";
2assertTrue(url.matches("\/100\/people\?c=[0-9]+"));
3assertTrue(url.matches("\/[0-9]+\/people\?c=[0-9]+"));
$companyId
が変数展開でなく文字列だとすると以下のようになります。
java
1String url = "/$companyId/people?c=1234";
2assertTrue(url.matches("\/\$companyId\/people\?c=[0-9]+"));
【追記】
Javaの正規表現テストできるサイトがあったので追記します。
Regular Expression Test Drive