java - 使用 mockito 在测试类中模拟新实例的创建
问题描述
我试图在我正在测试的类中模拟一个对象的新实例,但我正在努力寻找一种使用 Mockito 来做到这一点的方法。
如果我理解正确,这可能是可以使用 Powermock 实现的,但我只能使用 Mockito。
这就是我想要做的
private class MyTestClass{
private doSomethingMethod(){
Object obj = new Object();
obj.getSomething;
}
}
我目前正在监视 MyTest 类,并想模拟新的 Object 以便我可以操纵 obj.getSomething() 的结果
这是使用 Mockito 可以实现的吗?谢谢
解决方案
恕我直言,正如您已经说过的,在您的情况下,一切都比使用 Powermock 更好。
在类似的情况下,我正在使用一种解决方案,该解决方案将“不可修改”代码放在尽可能小的方法中,@Spy
例如:
public class SpyTest {
@Spy
private MyTestClass myTestClass;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void spyInsteadOfPowermock() {
when(myTestClass.getObject()).thenReturn(Integer.valueOf(3));
assertThat(myTestClass.doSomethingMethod()).isEqualTo("3");
}
class MyTestClass{
public String doSomethingMethod(){
return getObject().toString();
}
Object getObject() {
return new Object();
}
}
}
推荐阅读
- amazon-web-services - Does dynamodb global replace the whole item during sync?
- sql - 如何将包含多个“STRING_AGG”的查询转换为“FOR XML PATH”?
- swift - 在swift中使用Google place api时出错
- amazon-web-services - 使用 HTTP 错误代码 (503) 在两个 AWS Auto Scaling 组之间自动切换蓝/绿
- kubernetes - nginx 入口控制器在添加 - -default-ssl-certificate=default/certificate-name 标志后进入 CrashLoopBackOff 状态
- javascript - 未捕获的错误:目标容器不是 DOM 元素。反应.js
- reactjs - 无法在 allMarkdownRemark graphql 上查询字段
- r - 我想使用 R 的任何其他函数而不是 sprintf 来计算列表组
- python - 如何让 discord.py bot 发送到它被调用的服务器?
- c# - 为什么我的代码中 REST API 的响应不是 JSON 格式,而是带有 Google 扩展“restman”的正确格式?