package jnpf.dmsController.print; import jnpf.dmsEntity.print.form.DmsPrintOperationQuery; import jnpf.dmsEntity.print.vo.DmsPrintOperationLogVO; import jnpf.dmsService.DmsPrintOperationLogService; import org.junit.jupiter.api.Test; import org.springframework.mock.web.MockHttpServletResponse; import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; class DmsPrintOperationLogControllerTest { @Test void exportWritesUtf8BomAndCsvThroughSingleOutputStream() throws Exception { DmsPrintOperationLogVO row = new DmsPrintOperationLogVO(); row.setDocumentCode("BG-001"); row.setDocumentName("检验,报告"); row.setPrintType("RECORD_DOCUMENT"); row.setOperatorName("张三"); row.setCopies(1); DmsPrintOperationLogService service = new DmsPrintOperationLogService(null, null, null) { @Override public List export(DmsPrintOperationQuery query) { return Collections.singletonList(row); } }; MockHttpServletResponse response = new MockHttpServletResponse(); new DmsPrintOperationLogController(service).export(new DmsPrintOperationQuery(), response); byte[] content = response.getContentAsByteArray(); assertEquals((byte) 0xEF, content[0]); assertEquals((byte) 0xBB, content[1]); assertEquals((byte) 0xBF, content[2]); String csv = new String(content, StandardCharsets.UTF_8); assertTrue(csv.startsWith("\uFEFF编号,名称")); assertTrue(csv.contains("\"检验,报告\"")); } }