Я считаю, что this является документацией Вы искали:
Match объектов или методы
Хотя matchers обычно используется для указания допустимых значений параметров, они также могут быть использованы для определения приемлемых объекты или методы в ожидании, используя синтаксис API, аналогичный синтаксису API jMock 1. Для этого используйте матчи, где вы обычно ссылаетесь на объект-макет непосредственно в предложении count invocation. Затем цепочка содержит вместе для определения ожидаемого вызова.
Их пример включает в себя:
Чтобы призывания любого боба собственности добытчика на любом фиктивном объекте:
allowing (any(Object.class)).method("get.*").withNoArguments();
Например, вы можете использовать следующую allowing
... часть в цикле для добиться аналогичного результата.
Испытание образца:
Интерфейс:
public interface ThingOneI {
public abstract String getData();
public abstract void setData(String data);
public abstract String getRequest();
public abstract void setRequest(String request);
}
Impl:
public class ThingOne implements ThingOneI {
private String data;
private String request;
public ThingOne() {
}
@Override
public String getData() {
return data;
}
@Override
public void setData(String data) {
this.data = data;
}
@Override
public String getRequest() {
return request;
}
@Override
public void setRequest(String request) {
this.request = request;
}
}
тест Junit:
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.junit.Before;
import org.junit.Test;
public class ThingOneTest {
Mockery context = new Mockery();
@Before
public void setUp() throws Exception {
}
@Test
public void test() {
ThingOneI thingOne = context.mock(ThingOneI.class);
Map<String, String> methMap = new HashMap<String, String>();
methMap.put("getData", "5");
context.checking(new Expectations() {{
for (Map.Entry<String, String> entry : methMap.entrySet())
allowing(any(ThingOneI.class))
.method(entry.getKey())
.with(any(String.class));
will(returnValue(entry.getValue()));
}
}});
System.out.println(thingOne.getData());
}
}
После прочтения вашего вопроса, он больше похож на вас спрашивает, как, в Джмоке 2, чтобы перебирать все поля или сеттеры в макете и присваивать им значение. Ваш заголовок заставляет его звучать так, как будто вы пытаетесь получить доступ к методам макета как статический импорт, поэтому вам не нужно было бы вводить mock.setData(), а не просто setData(), поскольку обычно называются совпадения. – ethesx
У меня есть карта, содержащая некоторые конкретные имена методов для определенного класса. Теперь я хочу создать макет с указанным поведением для этих методов. Проблема заключается в том, что в Jmock 2 изделенный объект ведет себя как экземпляр этого класса, поэтому мы можем указать: «allow (mockObj) .getXXX(); will (returnValue (« sayYYY »)), но здесь я не знаете, как указать это 'getXXX()', потому что я получаю это имя метода String с карты, которую я не могу контролировать. – nickspol
Я отозвал свой ответ. Помимо использования отражения, которое я могу опубликовать, я больше не вижу пути. Однако, если это DTO или VO, вы издеваетесь над этим, вы должны просто заполнить реальный объект. – ethesx