unit-testing - EasyMock 对象的字段/属性可以通过外部方法修改吗?
问题描述
假设我模拟了一个具有名为“name”的字段的对象,我能否通过外部方法填充“name”字段,而不是通过 EasyMock.expect().andReturn(),也不能通过 EasyMock.name =“hard-code”?所以它看起来像下面这样:
var easyMock = EasyMock.createNickMock(Object)
ClassUtil.methodOne(condition, easyMock)
其中 methodOne(或外部方法)包含以下实现:
methodOne(condition, object) {
if (condition == true)
object.name = "something"
else
object.name = "nothing"
}
目的是让我可以执行以下操作:
assertEquals(easyMock.name, "something")
退出该方法后,该值似乎没有保留。有什么想法吗?
解决方案
我不建议同时公开字段和模拟。不应模拟值类型,其他所有内容均不应公开字段。
也就是说,它应该工作。这是一个工作示例:
public class ClassWithField {
public String name;
}
public class ClassWithFieldTest {
@Test
public void test() {
ClassWithField c = niceMock(ClassWithField.class);
c.name = "test";
assertEquals("test", c.name);
}
}
请注意,您甚至不需要,replay(c)
因为您正在处理一个字段。
推荐阅读
- python - Docker复制,复制整个根目录而不是子目录
- lightgbm - 如何在 lightgbm 中为不平衡数据集设置多类(4 类)分类的权重?
- c - FreeRTOS:为什么我的任务在调用 vTaskStartScheduler 后没有启动?
- web - 网站 CPU/GPU 费用计算器
- sql - 在 SQL 查询中查找/替换为通配符
- r - 设置工作目录 R 错误 u2069 无法更改工作目录
- javascript - 为多个高图创建默认选项
- java - 如何始终居中对齐
- html - 在我添加 !important 之前未考虑媒体查询,可能的原因?
- kubernetes - Kubernetes - 准备探测不适用于部署