У меня есть фиктивный объект, который ожидает, что на нем будет вызван метод. Как убедиться, что ожидаемый строковый аргумент начинается с определенного префикса?
oneOf(mockObject).methodName(with(any(String.class));
У меня есть фиктивный объект, который ожидает, что на нем будет вызван метод. Как убедиться, что ожидаемый строковый аргумент начинается с определенного префикса?
oneOf(mockObject).methodName(with(any(String.class));
В случае с JMockit он предоставляет нужный сопоставитель из коробки:
new Expectations() {{
mockObject.methodName(withPrefix("PREFIX"));
}};
Я бы использовал пользовательский сопоставитель. Оказывается, пример на сайте jmock о том, как написать собственный сопоставитель, охватывает написание одного для сопоставления префиксов. Я не буду копировать сюда код, но ссылка http://www.jmock.org/custom-matchers.html
В качестве альтернативы, более ленивый подход состоял бы в том, чтобы просто проверить, содержит ли строка конкретный префикс где-либо в строке. Вы можете сделать это с помощью существующего сопоставителя stringContaining.
oneOf(mockObject).methodName(with(stringContaining("PREFIX"));
Приемлемо ли это в вашем модульном тесте, будет зависеть от строки, префикса и того, что вы тестируете.