Пружинная загрузка и угловая проверка получат ошибку 406 - PullRequest
0 голосов
/ 25 января 2019

Ад. Я делаю юнит-тесты с жасмином, кармой и ангуляром. Когда я выполнил следующий тест, я получил это исключение:

feign.FeignException: статус 406, чтение AppRbp # getReports (DTOReport)

код: Метод, который я тестирую

  exportReportSwitch() {
switch (this.modulo) {
  case 'RBP':
    this.serviceRbp.getReports(this.reportSelected).subscribe(response => this.savePdf(response, this.reportSelected));
    break;
  case 'CCR':
    this.serviceCcr.getReports(this.reportSelected).subscribe(response => this.savePdf(response, this.reportSelected));
  break;
  case 'Micro':
    this.serviceMicro.getReports(this.reportSelected).subscribe(response => this.savePdf(response, this.reportSelected));
  break;
  default:
  break;
}

Тест

it('Test unitario metodo exportReportSwitch() en caso de que Sea Micro', () => {
//Arrange
const serviceMicro = fixture.debugElement.injector.get(MicroService);
const serviceSpy = spyOn(serviceMicro, 'getReports').and.callThrough();
when(serviceMicro.getReports('Listado 1').subscribe()).thenReturn();
component.modulo = 'Micro';
//Act
component.exportReportSwitch();
//Assert
expect(serviceSpy).toHaveBeenCalled();  });

Бэкэнд-метод

@CrossOrigin
@RequestMapping(value = "/getReports", method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
@ResponseBody
public ResponseEntity<byte[]> getReports(@RequestBody DTOReports dto) {
    String nameFile = dto.getReport();
    String jrxmlDir = "src/main/resources/jrxml/";
    String jasperDir = jrxmlDir + "/jasper/";
    byte[] outputPDF=null;
    try {
        File mainfile = ResourceUtils.getFile(jrxmlDir +nameFile + ".jrxml");
        compilerToJasper(jrxmlDir, jasperDir, nameFile);

        Map<String, Object> parameters = new HashMap<>();
        parameters.put("SUBREPORT_DIR", jasperDir);
        JasperReport report=JasperCompileManager.compileReport(mainfile.getAbsolutePath());
        JasperPrint jasperPrint = JasperFillManager.fillReport(report,parameters,this.dataSource.getConnection());

        JRPdfExporter exporter = new JRPdfExporter();
        exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
        ByteArrayOutputStream pdfReportStream = new ByteArrayOutputStream();
        exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(pdfReportStream));
        exporter.exportReport();

        outputPDF = pdfReportStream.toByteArray();
    } catch (Exception e) {
        System.out.println("Se ha producido la siguiente excepcion: " + e);
    }

    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setContentType(MediaType.valueOf("application/pdf"));
    responseHeaders.setContentLength(outputPDF.length);
    return new ResponseEntity<byte[]>(outputPDF, responseHeaders, HttpStatus.OK);

}

Угловой сервис

    getReports(file: String): Observable<any> {
    let body = JSON.stringify({
        'report': file
    });
    return this.llamarServicioDownloadFile(this.baseURL_RBP + GET_REPORTS_RBP, body);
}

и, наконец, ошибка в изображении

ошибка Если вам нужна дополнительная информация, пожалуйста, не спрашивайте меня. Я нуб в StackOverflow Извините за мой английский, я испанский

1 Ответ

0 голосов
/ 29 января 2019

Наконец-то я нашел решение.Мне понадобился сервис "Хак".

 const serviceSpy = spyOn(serviceMicro, 'getReports').and.returnValue(Observable.of());

вместо:

     const serviceSpy = spyOn(serviceMicro, 'getReports').and.callThrough();;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...