📄 wickettester.java
字号:
this(application, null); } /** * Creates a <code>WicketTester</code> to help unit testing. * * @param application * a <code>WicketTester</code> <code>WebApplication</code> object * @param path * the absolute path on disk to the web application's contents (e.g. war root) - may * be <code>null</code> * * @see org.apache.wicket.protocol.http.MockWebApplication#MockWebApplication( * org.apache.wicket.protocol.http.WebApplication, String) */ public WicketTester(final WebApplication application, final String path) { super(application, path); // We need to turn this on for unit testing so that url encoding will be // done on sorted maps of parameters and they will string compare UnitTestSettings.setSortUrlParameters(true); } /** * Asserts that the Ajax location header is present. */ public void assertAjaxLocation() { if (null != ((MockHttpServletResponse)getWicketResponse().getHttpServletResponse()).getRedirectLocation()) { throw new AssertionFailedError( "Location header should *not* be present when using Ajax"); } String ajaxLocation = ((MockHttpServletResponse)getWicketResponse().getHttpServletResponse()).getHeader("Ajax-Location"); if (null == ajaxLocation) { throw new AssertionFailedError("Ajax-Location header should be present when using Ajax"); } int statusCode = ((MockHttpServletResponse)getWicketResponse().getHttpServletResponse()).getStatus(); if (statusCode != 200) { throw new AssertionFailedError("Expected HTTP status code to be 200 (OK)"); } } /** * Asserts a <code>Component</code> class. * * @param path * path to <code>Component</code> * @param expectedComponentClass * expected <code>Component</code> class */ public void assertComponent(String path, Class expectedComponentClass) { assertResult(isComponent(path, expectedComponentClass)); } /** * Tests that a <code>Component</code> has been added to a <code>AjaxRequestTarget</code>, * using {@link AjaxRequestTarget#addComponent(Component)}. This method actually tests that a * <code>Component</code> is on the Ajax response sent back to the client. * <p> * PLEASE NOTE! This method doesn't actually insert the <code>Component</code> in the client * DOM tree, using Javascript. But it shouldn't be needed because you just have to trust that * Wicket Ajax Javascript works. * * @param component * a <code>Component</code> to be tested */ public void assertComponentOnAjaxResponse(Component component) { Result result = isComponentOnAjaxResponse(component); assertResult(result); } /** * Tests that a <code>Component</code> has been added to a <code>AjaxRequestTarget</code>, * using {@link AjaxRequestTarget#addComponent(Component)}. This method actually tests that a * <code>Component</code> is on the Ajax response sent back to the client. * <p> * PLEASE NOTE! This method doesn't actually insert the <code>Component</code> in the client * DOM tree, using Javascript. But it shouldn't be needed because you just have to trust that * Wicket Ajax Javascript works. * * @param componentPath * a <code>Component</code> path to test */ public void assertComponentOnAjaxResponse(String componentPath) { assertComponentOnAjaxResponse(getComponentFromLastRenderedPage(componentPath)); } /** * Asserts the content of last rendered page contains (matches) a given regex pattern. * * @param pattern * a reqex pattern to match */ public void assertContains(String pattern) { assertResult(ifContains(pattern)); } /** * Asserts error-level feedback messages. * * @param expectedErrorMessages * expected error messages */ public void assertErrorMessages(String[] expectedErrorMessages) { List actualMessages = getMessages(FeedbackMessage.ERROR); List msgs = new ArrayList(); for (Iterator iterator = actualMessages.iterator(); iterator.hasNext();) { msgs.add(iterator.next().toString()); } WicketTesterHelper.assertEquals(Arrays.asList(expectedErrorMessages), msgs); } /** * Assert info-level feedback messages. * * @param expectedInfoMessages * expected info messages */ public void assertInfoMessages(String[] expectedInfoMessages) { List actualMessages = getMessages(FeedbackMessage.INFO); WicketTesterHelper.assertEquals(Arrays.asList(expectedInfoMessages), actualMessages); } /** * Asserts that a <code>Component</code> is invisible. * * @param path * path to <code>Component</code> */ public void assertInvisible(String path) { assertResult(isInvisible(path)); } /** * Asserts the text of a <code>Label</code> <code>Component</code>. * * @param path * path to <code>Label</code> <code>Component</code> * @param expectedLabelText * expected text of the <code>Label</code> */ public void assertLabel(String path, String expectedLabelText) { Label label = (Label)getComponentFromLastRenderedPage(path); Assert.assertEquals(expectedLabelText, label.getModelObjectAsString()); } /** * Asserts the model value of a component. * * @param path * path to the component on the page * @param expectedValue * expected value of the component's model */ public void assertModelValue(String path, Object expectedValue) { Component component = getComponentFromLastRenderedPage(path); Assert.assertEquals(expectedValue, component.getModelObject()); } /** * Asserts the model of a {@link ListView}. * * @param path * path to a {@link ListView} <code>Component</code> * @param expectedList * expected <code>List</code> in the model of the given {@link ListView} */ public void assertListView(String path, List expectedList) { ListView listView = (ListView)getComponentFromLastRenderedPage(path); WicketTesterHelper.assertEquals(expectedList, listView.getList()); } /** * Asserts no error-level feedback messages. */ public void assertNoErrorMessage() { List messages = getMessages(FeedbackMessage.ERROR); Assert.assertTrue("expect no error message, but contains\n" + WicketTesterHelper.asLined(messages), messages.isEmpty()); } /** * Asserts no info-level feedback messages. */ public void assertNoInfoMessage() { List messages = getMessages(FeedbackMessage.INFO); Assert.assertTrue("expect no info message, but contains\n" + WicketTesterHelper.asLined(messages), messages.isEmpty()); } /** * Asserts a <code>PageLink</code> link to a <code>Page</code> class. * * @param path * path to <code>PageLink</code> <code>Component</code> * @param expectedPageClass * expected <code>Page</code> class to link */ public void assertPageLink(String path, Class expectedPageClass) { assertResult(isPageLink(path, expectedPageClass)); } /** * Asserts a last-rendered <code>Page</code> class. * * @param expectedRenderedPageClass * expected class of last rendered <code>Page</code> */ public void assertRenderedPage(Class expectedRenderedPageClass) { assertResult(isRenderedPage(expectedRenderedPageClass)); } /** * Asserts last-rendered <code>Page</code> against an expected HTML document. * <p> * Use <code>-Dwicket.replace.expected.results=true</code> to automatically replace the * expected output file. * * @param clazz * <code>Class</code> used to load the file (relative to <code>clazz</code> * package) * @param filename * expected output filename <code>String</code> * @throws Exception */ public void assertResultPage(final Class clazz, final String filename) throws Exception { String document = getServletResponse().getDocument(); setupRequestAndResponse(); DiffUtil.validatePage(document, clazz, filename, true); } /** * Asserts last-rendered <code>Page</code> against an expected HTML document as a * <code>String</code> * * @param expectedDocument * expected output <code>String</code> * @throws Exception */ public void assertResultPage(final String expectedDocument) throws Exception { // Validate the document String document = getServletResponse().getDocument(); Assert.assertEquals(expectedDocument, document); } /** * Asserts that a <code>Component</code> is visible. * * @param path * path to a <code>Component</code> */ public void assertVisible(String path) { assertResult(isVisible(path)); } private void assertResult(Result result) { if (result.wasFailed()) { throw new AssertionFailedError(result.getMessage()); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -