2017-09-13 98 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