簡體   English   中英

如何模擬未設置為變量的對象

[英]How to Mock an object that is not set to a variable

我目前正在為遺留代碼編寫單元測試。 我需要在該對象的函數調用上為“ doReturn”模擬一個對象。 但是,該對象在被調用的同一行上實例化,並且從未分配給變量。 有沒有一種方法可以模擬此返回值而不接觸原始代碼?

包含函數調用的舊代碼行,需要返回一個模擬列表:

List<Map<String, String>> referenceDataList = new ReferenceDataInquiryMapper().execute(referenceDataInquiry);

我嘗試模擬此“執行”調用:

List<Map<String, String>> referenceDataList = new ArrayList<Map<String, String>>();
//Add data to referenceDataList
ReferenceDataInquiryMapper referenceDataInquiryMapper = PowerMockito.mock(ReferenceDataInquiryMapper.class);
PowerMockito.doReturn(referenceDataList).when(referenceDataInquiryMapper,"execute",Mockito.any());

我也嘗試過:

PowerMockito.doReturn(referenceDataList).when(new ReferenceDataInquiryMapper(),"execute",Mockito.any());

引發PowerMockito錯誤

以及:

PowerMockito.doReturn(referenceDataList).when(PowerMockito.mock(ReferenceDataInquiryMapper.class),"execute",Mockito.any());

這引發了與我的第一次嘗試相同的異常。

在運行測試並引發異常時,上面發布的第一行嘗試返回一個Mock值,而不是返回Mock值。 實際上可以模擬該代碼嗎?

〜謝謝

創建新對象時,我們需要返回其模擬。 如下所示添加whenNew。

List<Map<String, String>> referenceDataList = new ArrayList<Map<String, String>>();
//Add data to referenceDataList
ReferenceDataInquiryMapper referenceDataInquiryMapper = 
PowerMockito.mock(ReferenceDataInquiryMapper.class);

PowerMockito.whenNew(ReferenceDataInquiryMapper.class).thenReturn( referenceDataInquiryMapper);

PowerMockito.doReturn(referenceDataList).when( referenceDataInquiryMapper,"execute",Mockito.any());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM