2015-06-18 25 views
1

我有這樣如何嘲笑InputStream和字節串

private byte[] getInternalMDPayload(String metaDataDirString) 
{ 

    byte[] data = new byte[16384]; 

    try 
    { 
     final InputStream internalMetadataInputStream = this.getClass().getClassLoader() 
       .getResourceAsStream(metaDataDirString);   
     data = ByteStreams.toByteArray(internalMetadataInputStream); 
     byteString = ByteString.copyFrom(data); 

    } catch (IOException e) 
    { 
     dl.debug("Error occurred while loading the metadata file" + metaDataDirString); 
    } 
} 

的方法有沒有什麼辦法來模擬這些對象呢?

目前我使用@Mocked final Process mockProcess模擬輸入流無法找出如何模擬ByteStringbyte[]

+0

哪個嘲諷框架您使用的? –

+1

這聽起來像是你真的想要僞造的'ClassLoader.getResourceAsStream'。您不需要自己模擬這些值 - 使用「ByteArrayInputStream」作爲輸入流是很簡單的,此時其餘部分很容易就會崩潰。 –

+0

我正在使用jmockit框架。 –

回答

1

我會去與這樣的:

Mockito 
    .when(ByteString.copyFrom(Mockito.<byte[]>any())) 
    .thenReturn(ByteString.copyFromUtf8("byteString was mocked")); 
+0

似乎我無法使用Mockito。因爲我正在使用jmockit。 –

+0

請爲該框架添加一個標籤,然後。 – Rufi