Можно ли изменить поле / свойство объекта EasyMock внешним методом? - PullRequest
0 голосов
/ 27 апреля 2020

Предположим, я смоделирую объект, имеющий поле с именем "name", смогу ли я заполнить поле "name" с помощью внешнего метода , а НЕ через EasyMock.expect (). AndReturn () или EasyMock .name = "жесткий код"? Таким образом, это выглядит следующим образом:

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")

Кажется, значение не сохраняется после выхода из метода. Есть мысли?

1 Ответ

0 голосов
/ 28 апреля 2020

Я не могу рекомендовать выставлять поля и издеваться одновременно. Тип значения не должен быть поддельным, а все остальное не должно выставлять поле.

Тем не менее, оно должно работать. Вот рабочий пример:

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), поскольку вы действуете на поле.

...