第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 PrintWriter 測試方法?

如何使用 PrintWriter 測試方法?

開滿天機(jī) 2021-09-12 20:35:52
我有以下方法:@Componentpublic 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.使用它來將對象狀態(tài)包裝成csv格式。我使用 StringWriter 將響應(yīng)包裝在其中。沒有更多細(xì)節(jié)了,但似乎我必須創(chuàng)建一些單詞才能通過驗證:)
查看完整描述

3 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗 獲得超5個贊

你不需要 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");

}

這個例子假設(shè)了一些關(guān)于你的Status對象的事情,但你有一般的想法。對于斷言,我使用AssertJ,但您可以使用 JUnit5 內(nèi)置斷言執(zhí)行相同操作。


查看完整回答
反對 回復(fù) 2021-09-12
?
RISEBY

TA貢獻(xiàn)1856條經(jīng)驗 獲得超5個贊

您可以編寫這樣的測試并更改 write 方法中的輸入:


    @Test

    public void test() {

        WriteCsvToResponse writeCsvToResponse = mock(WriteCsvToResponse.class);


        doAnswer(new Answer() {

            public Object answer(InvocationOnMock invocation) {

                Object[] args = invocation.getArguments();

                write((Status)args[1]);

                return null;

            }

        }).when(writeCsvToResponse).writeStatus(any(PrintWriter.class),any(Status.class));


        writeCsvToResponse.writeStatus(writer, status);

    }


    public void write(Status status) {

//      do anythings you like with status

    }


查看完整回答
反對 回復(fù) 2021-09-12
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊

稍微重構(gòu)一下,其中 Builder 是注入到該組件中的 Spring Bean。

然后,您可以模擬該構(gòu)建器以返回模擬的 StatefulBeanToCsv,特別是 write 方法,您可以在其中編寫條件和斷言。如果遇到錯誤,則拋出一些未經(jīng)檢查的異常,例如 IllegalStateException,如果一切正常,則不拋出任何內(nèi)容


查看完整回答
反對 回復(fù) 2021-09-12
  • 3 回答
  • 0 關(guān)注
  • 272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號