java - Mockito when().thenReturn() 用法
问题描述
所以基本上,我正在尝试编写一个单元测试,但我的问题是我们是否需要模拟变量/对象的每个参数?这不是通过手动输入正确的值来简单地破坏目的。
public class MainClass{
public void somefunction(Object obj){
List<someOtherClass> lists = obj.list;
for (someOtherClass list:lists){
System.out.println(list.v1+list.v2);
}
}
}
public class SomeClass {
public String id;
public List<SomeOtherClass> list;
}
public class SomeOtherClass {
public String v1;
public String v2;
}
在我的测试文件中:
class MainClassTest {
List<SomeOtherClass> list = new ArrayList<>();
SomeOtherClass list1 = spy(new SomeOtherClass()); // as adviced here: https://stackoverflow.com/questions/33125769/mockito-when-thenreturn-doesnt-work-properly
@Test
void someFunction(){
when(list1.v1).thenReturn("v1");
// When I do the above line and try to print `list1.v1` I still get null value.
}
}
- 我应该只模拟 v1 和 v2 然后创建列表吗?哪个是正确和更有效的方法?我实际上有很多变量,通过
null
检查 NPE 会很痛苦。
解决方案
推荐阅读
- python-3.x - 如何使用python将xml块添加到原始xml结构中
- javascript - 无法在父组件中运行子组件方法
- python-3.x - 皮威。如何选择所有带有预取字段的外键字段的模型项?
- asp.net-core - FHIR 的通用数据类型对象从 .NET Core 中的 JSON 解析
- ios - 如何更改标签栏控制器的选定索引?
- c# - 为什么我的查询(包含作为命令文本的 sql 文件)超时?
- .net - 从 NATS 切换到 RabbitMQ
- javascript - 角度图像上传不适用于 Internet Explorer,但它适用于谷歌浏览器
- awesome-wm - awesome-wm:为切换视图桌面创建快捷键
- javascript - window.history 删除除当前 url 之外的历史堆栈