О с (любым(Class.class ))) с JMock

#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), так что любая из них будет работать.