EasyMock对象的fieldproperty可以通过外部方法修改吗?

问题描述 投票:0回答:1

假设我模拟了一个有 "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")

似乎从方法中出来后,值不会被保留。有什么想法吗?

unit-testing easymock
1个回答
0
投票

我不建议同时暴露字段和嘲讽。一个值类型不应该被嘲讽,其他一切都不应该暴露字段。

尽管如此,它应该可以工作。下面是一个工作的例子。

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) 既然你是在一个领域里行动。

© www.soinside.com 2019 - 2024. All rights reserved.