假设我模拟了一个有 "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)
既然你是在一个领域里行动。