簡體   English   中英

未模擬ContextWrapper中的getDir方法[Mockito]

[英]Method getDir in ContextWrapper not mocked [Mockito]

我正在嘗試測試使用ContextWrapper類的模塊。

我嘗試使用以下代碼來模擬它:

 ContextWrapper contextWrapper = mock(ContextWrapper.class);
 File myFile = mock(File.class);
 doReturn(mFile).when(contextWrapper).getDir(anyString(), anyInt());

被測試的方法仍然使用其自己的ContextWrapper聲明並返回Exception

java.lang.RuntimeException: Method getDir in android.content.ContextWrapper not mocked

我檢查了與此問題相關的其他條目,發現這可能是由於它是專有的Android類。

我也嘗試過Mockito v2

given(contextWrapper.getDir(AppFolders.getFolderPath(), Context.MODE_PRIVATE)).willReturn(mFile);

編輯:這是我要測試的模塊

public void send(final String id, final ErrorReport errorReport, final MyCallback callback) {
if(null == errorReport || null == errorReport.getType()){
  callback.result("Error Report Empty"));
  return;
}

try {
  processResponse(sendReport(id, errorReport),
          callback,
          new Executable() {
            @Override
            public void execute() throws Exception {
              callback.result("SUCCESS");
            }
          },
          origin);
} catch (Exception e) {
  e.printStackTrace();
}}

這是ContextWrapper所在的模塊

private MyResponse sendReport(String id, ErrorReport errorReport) throws Exception {
ContextWrapper contextWrapper = new ContextWrapper(context);
AppFolders.setCustomerInfoZipFilename(id);
File logFolder = contextWrapper.getDir(AppFolders.getFolderPath(), Context.MODE_PRIVATE);
File zipFile = new File(logFolder.getAbsolutePath() + AppFolders.getCustomerInfoZipFilename());

String zipBase64 = getBase64String(zipFile);

ErrorReportData errorReportData = new ErrorReportData();
errorReportData.setData(zipBase64);

MyResponse response = myClient.errorReport(errorReportData);
return response;}

這是測試模塊

public class Send extends BaseTest{

private static final String URL_METHOD_CALL = "send/";

private File myFile;

private ContextWrapper contextWrapper;

@Test
public void when_send_response_valid_then_callback_success() throws Exception {

    ErrorReport errorReport = new ErrorReport();
    errorReport.setType(new ErrorType());

    contextWrapper = mock(ContextWrapper.class);

    myFile = mock(File.class);

    whenNew(ContextWrapper.class).withArguments(any(Context.class)).thenReturn(contextWrapper);
    doReturn(myFile).when(contextWrapper).getDir(anyString(), anyInt());


    MyResponse response = MockClient.getMockClient().submit(mockHost+URL_METHOD_CALL, StatusCode.STATUS_SUCCESS);

    doSetToken();
    when(client.errorReport(any(ErrorReportData.class), any(ClientImpl.Header.class))).thenReturn(response);
    service.send(mockUser, errorReport, new Callback<String>() {
        @Override
        public void result(Response<String> response) {
            assertEquals(StatusCode.STATUS_SUCCESS, response.getStatus());
        }
    });
}}

嘗試這個

File myFile = mock(File.class);
when(contextWrapper.getDir(anyString(), anyInt())).thenReturn(myFile);

暫無
暫無

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

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