### Question:
BookmarkableRedirectView extends RedirectView implements BookmarkableView, FacesRenderedView { public void render(Map<String, ?> model, FacesContext facesContext) throws Exception { HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest(); String targetUrl = doCreateTargetUrl(model, request); facesContext.getExternalContext().redirect(targetUrl); } BookmarkableRedirectView();  BookmarkableRedirectView(String url);  BookmarkableRedirectView(String url, boolean contextRelative);  BookmarkableRedirectView(String url, boolean contextRelative, boolean http10Compatible);  BookmarkableRedirectView(String url, boolean contextRelative, boolean http10Compatible,
			boolean exposeModelAttributes); void render(Map<String, ?> model, FacesContext facesContext); String getBookmarkUrl(Map<String, ?> model, HttpServletRequest request);  }### Answer:
@Test public void shouldRedirectWithPathVariables() throws Exception { BookmarkableRedirectView view = new BookmarkableRedirectView("/ab/{cd}"); Map<String, Object> model = new HashMap<String, Object>(); model.put("cd", "CD"); String expected = "/ab/CD"; HttpServletResponse response = mock(HttpServletResponse.class); given(response.encodeRedirectURL(expected)).willReturn(expected); view.render(model, this.request, response); verify(response).sendRedirect(expected); }