我的代码与此相似
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
?
答案 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来了解我在说什么。如果你有一些经验丰富的人,请与他们交谈;并让他们审查你的设计。