gpt4 book ai didi

java - 如何使用 PrintWriter 测试方法?

转载 作者:行者123 更新时间:2023-11-29 06:27:05 25 4
gpt4 key购买 nike

我有以下方法:

@Component
public class WriteCsvToResponse {

private static final Logger LOGGER = LoggerFactory.getLogger(WriteCsvToResponse.class);

public void writeStatus(PrintWriter writer, Status status) {

try {

ColumnPositionMappingStrategy mapStrategy
= new ColumnPositionMappingStrategy();

mapStrategy.setType(Status.class);

String[] columns = new String[]{"id", "storeId", "status"};
mapStrategy.setColumnMapping(columns);

StatefulBeanToCsv btcsv = new StatefulBeanToCsvBuilder(writer)
.withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
.withMappingStrategy(mapStrategy)
.withSeparator(',')
.build();

btcsv.write(status);

} catch (CsvException ex) {

LOGGER.error("Error mapping Bean to CSV", ex);
}
}

我不知道如何使用 mockito 正确测试它。

使用它将对象状态包装成csv格式。我使用 StringWriter 将响应包装在其中。没有更多的细节了,但似乎我必须创建一些词来通过验证:)

最佳答案

你不需要 mockito 来测试这个方法,只需要一个 java.io.StringWriter

下面是如何编写名义用途的测试:

@Test
void status_written_in_csv_format() {
// Setup
WriteCsvToResponse objectUnderTest = new WriteCsvToResponse ();
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);

// Given
Status status = ...

// When
objectUnderTest.writeStatus(printWriter, status);

// Then
String actualCsv = stringWriter.toString();
assertThat(actualCsv.split("\n"))
.as("Produced CSV")
.containsExactly(
"id,storeId,status",
"42,142,OK");
}

这个例子假设了一些关于您的 Status 对象的事情,但是您有大概的想法。对于断言,我使用 AssertJ ,但您可以使用 JUnit5 内置断言执行相同的操作。

希望对您有所帮助!

关于java - 如何使用 PrintWriter 测试方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com