калитка 9: как протестировать загрузку ресурса

#wicket

#калитка

Вопрос:

У меня есть компонент, который позволяет пользователю загружать файл Excel после нажатия на ссылку. Это работает, и все в порядке, но я не знаю, как написать тест для этого компонента. Я хочу написать тест, чтобы проверить, отправляется ли файл клиенту после нажатия на ссылку.

Итак, мой компонент выглядит следующим образом

 Linklt;Voidgt; calculationsLink = new Linklt;gt;("calculationsLink") {  @Override  public void onClick() {   AbstractResourceStreamWriter rStream =  new AbstractResourceStreamWriter() {   @Override  public void write(OutputStream output)  throws IOException {  output.write(MyApp.class  .getResourceAsStream(pathToCalculations)  .readAllBytes());  }  };   ResourceStreamRequestHandler handler =  new ResourceStreamRequestHandler(rStream, "calculations.xslx");  getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);  } };  

Мой тест-это

 @Test public void calculations_file_downloaded_Successfully() {  // then start and render the base page  tester.startPage(HomePage.class); lt;-- link is located in a HomePage   tester.clickLink("navBar:calculations", false); lt;-- link is clickable   tester.getResponse();//????   tester.assert???(?????); lt;-- how to assert and what to assert? }  

Ответ №1:

Вы должны использовать tester.getLastResponse() и утверждать его свойства.

tester.getResponse() является ответом MockHttpServletResponse, который будет использоваться для следующего HTTP-вызова.

Некоторые фиктивные примеры:

 assertEquals("application/octet-stream", tester.getLastResponse().getContentType()); assertEquals(3, tester.getLastResponse().getBinaryContent().length); assertArrayEquals(new byte[] {1, 2, 3}, tester.getLastResponse().getBinaryContent());