2017-09-13 57 views
0

我寫單元測試是發生在參數id的方法是類似下面的方法:的Mockito - 懲戒與參數

public void searchid(String id) { 
    Document doc = Repository.findDocument(id); //returns a document 
    if (doc == null) { 
     System.out.println("id missing"); 
    } else { 
     String stringRecord = doc.asJsonString(); //converting doc to string 

這裏Repository.findDocument(id)返回一個文檔。 在我的單元測試中,我從src/test/resources獲取JSON文件。那麼,我該如何模擬Repository.findDocument(id),以便從我的資源中獲取文件呢?

感謝,

+2

是'Repository.findDocument()''一個方法static'? –

+0

這裏回答了一個類似的問題:https://stackoverflow.com/questions/21105403/mocking-static-methods-with-mockito。 – canihazurcode

+0

不,我是自動裝配,然後使用'findDocument' – AYa

回答

1

的關鍵,可測性的是,你有一個repository即得到構造注入到你的類。這樣你就可以很容易地用假實例替換真實的存儲庫(例如mockito模擬)。

學習如何編寫測試代碼,我知道最好的來源,是http://misko.hevery.com/code-reviewers-guide/

0

您可以嘗試在嘲笑你的單元測試方法Repository.findDocument(id)調用。

Mockito.when(Repository.findDocument(Mockito.isA(String.class))).thenReturn(Mockito.mock(Document.class)); 

只要調用Repository.findDocument(id)調用,這將返回Mocked Document對象。

+0

因此,我應該解析JSON文件並存儲ID並將其傳遞到上面的函數ryt中? – AYa

+0

抱歉沒有注意到您需要Document對象,我編輯了我的答案。如果你想用自定義數據模擬Document對象,你可以這樣做。 – Venkat

+0

我應該在哪裏調用我的方法'searchid(id)'? – AYa