java - 在 mockito 中,我如何确保我的 mock 只充当 mock?
问题描述
与 easymock 不同的是,mockito 似乎很乐意让您在没有设置任何期望的 mock 上调用任何方法。
假设这是正在测试的方法:
public void printId(MyObject myObject) {
System.out.println(myObject.getId());
}
我写了这个测试代码:
myObject = Mockito.mock(MyObject.class);
ClassImTesting.printId(emailCampaign);
我想要和期望的是 mockito 向我抱怨,因为当它的测试代码询问 myObject.getId() 时,它应该不知道该怎么做。相反,它所做的是打印空值。
相反,如果我将测试代码更改为:
myObject = Mockito.mock(MyObject.class);
when(myObject.getId()).thenReturn("myId");
ClassImTesting.printId(emailCampaign);
它按预期工作并打印 "myId" ,因此模拟工作正常。如果我没有时间,为什么它会返回 null,为什么这是他们想要的行为,有没有办法制定更严格的规则,所有交互都必须被模拟或测试失败?
解决方案
推荐阅读
- python - 如何处理 docker 容器中的 403 禁止错误?
- testing - JMeter如何连续运行两个并行线程集
- python-3.x - Python - 带有 if 的 for 循环
- python - 为什么在这个深度 Q 学习模型的开发阶段得分(累积奖励)会下降?
- elasticsearch - 重构弹性搜索索引以允许过滤值的总和
- .net - 从 2.0 升级到 .net core 3.0 后得到“断点当前不会被命中”
- mongodb - 如何在 Mongo 中返回不匹配的查询值?
- maven-compiler-plugin - 为生成的代码排除 NullnessChecker 注释处理器
- python - 如何在python中对二维列表元素进行排序?
- r - 如何将多个变量分组到一个操作中