#java #testing #jmock
#java #тестирование #jmock
Вопрос:
С помощью JMock:
context.checking(new Expectations() {{
// Other oneOf() will() statements ...
oneOf(shopAccount).enter(100, with(any(String.class)));
will(returnValue(true));
// Other oneOf() will() statements ...
}});
Во время выполнения будет вызвано следующее исключение:
java.lang.Исключение IllegalArgumentException: не всем параметрам были предоставлены явные средства сопоставления: либо все параметры должны быть указаны средствами сопоставления, либо все должны быть указаны значениями, вы не можете смешивать средства сопоставления и значения.
Почему я не могу сделать это так? с помощью with(any(Klass.class))
?
Ответ №1:
если вы используете with
предложение для любого параметра, вы должны использовать их для всех параметров, попробуйте
oneOf(учетная запись магазина).введите(с(равным(100)), с(любым(String.class )));
Комментарии:
1. Не так ли
with(equal(100))
, неequalTo
?2. вы имеете в виду ‘equals()’, тогда это метод для объекта, который возвращает логическое значение. ‘equalto()’ — это статический метод сопоставления, который возвращает сопоставитель.
3. @Lukas
org.jmock.Expectations.equal(T)
иorg.hamcrest.core.IsEqual.equalTo(T)
определены эквивалентно (по крайней мере, в версиях jmock-2.5.1 и junit-4.8.2), так что любая из них будет работать.