Java Spring - unittest für FileDownload

notmyname

Cadet 2nd Year
Registriert
Mai 2015
Beiträge
30
Hi,

ich habe eine Spring-Boot Anwendung, mit der man eine Datei herunterladen kann.
Mein Controller dazu sieht so aus:

Code:
@RequestMapping(value = "/download/{Id}", method = RequestMethod.GET)
	public void getExcelFile(@PathVariable("Id") final int Id,
							 final HttpServletResponse response) throws DataNotFoundException, IOException {
		response.setHeader("Content-disposition", "attachment; filename=List.xlsx");
		try(final ByteArrayOutputStream os = this.waveService.getExcelFile(Id)) {
			FileCopyUtils.copy(os.toByteArray(), response.getOutputStream());
		}
	}

Mein Unittest sieht bisher so aus:

Code:
/*
viele Imports (z.B. Mockito und Junit)
*/
import org.springframework.boot.test.web.client.TestRestTemplate;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class CarrierIntegrationControllerTest {

	@Autowired
	TestRestTemplate testRestTemplate;

	@Test
	public void downloadExcel() throws Exception {
		this.testRestTemplate.getForEntity("/download/1", void.class);
	}
}

Mein Problem ist jetzt folgendes...
ich schaffe es nicht einmal, dass im Unittest mein Controller-Code ausgeführt wird. Es kommt jedesmal schon vorher eine Exception. Ich weiß nicht genau was ich ändern muss, damit durch mein "getForEntity" auch der Controller ausgeführt wird.

Ich habe bereits geschaut ob ich irgendwie (ein gemocktes) Attribut vom Typ HttpServletResponse an meinen Get-Request anhängen kann/muss, da es ja im Controller als Parameter verwendet wird. Aber ich hab keinen Weg gefunden wie das gehen könnte.
Hätte hier jemand eine Idee?

Update: achja - außerdem habe ich noch getestet ob es an dem Rückgabetyp void liegt und habe einfach mal als Rückgabetyp String verwendet und ein "ok" zurück gegeben. Den Controller konnte ich dennoch nicht aufrufen.
 
Zuletzt bearbeitet:
Wie lautet denn die Exception?
 
Zurück
Oben