如何调用模拟mockito对象的实际构造函数?

时间:2016-10-31 05:38:47

标签: java unit-testing junit mockito powermock

我的代码与此相似

class superClass{
    public String transform(String str);
    //lots of logic including ajax calls
    return("Modified"+str);
}

class baseClass extends superClass{
    private fetchData;
    baseClass(FetchData fetchData){   
    this.fetchData = fetchData;
}

 public String parse()
    str = fetchData.get();
    //some more logic to modify str
    return transform(str);
}

我正在使用mockito和junit来测试它。我在嘲笑baseClass并做这样的事情

baseClass baseMock = Mockito.mock(baseClass.class);
Mockito.when(baseMock.parse()).thenCallRealMethod();
Mockito.when(baseMock.transform()).thenReturn("Something");

如何通过构造函数注入模拟fetchData

2 个答案:

答案 0 :(得分:7)

您可以使用.center { height: 200px; position: relative; border: 3px solid green; } .center p { margin: 0; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#spy):

<div id="wrapper" style="text-align: center">    
    <div id="yourdiv" style="display: inline-block;">You text</div>
</div>

答案 1 :(得分:1)

您的问题属性不同:您创建了难以测试代码。这就是构造函数:人们必须非常小心他们正在做什么。

另一件事是你直接&#34;跑&#34;进入&#34;更喜欢组合而不是继承&#34;。简单地扩展一些其他类来继承一些有用的行为可能很诱人 - 但是当你这样做时,你就会遇到这样的问题!

我有点不回答:退一步,仔细研究一下你的设计是否真的是最好的解决方案。可能你首先要看那些videos来了解我在说什么。如果你有一些经验丰富的人,请与他们交谈;并让他们审查你的设计。