Новичок jMock Q: Аргумент метода тестирования — это любая строка, начинающаяся с заданного префикса.

У меня есть фиктивный объект, который ожидает, что на нем будет вызван метод. Как убедиться, что ожидаемый строковый аргумент начинается с определенного префикса?

oneOf(mockObject).methodName(with(any(String.class));

person Debajit    schedule 08.01.2015    source источник


Ответы (2)


В случае с JMockit он предоставляет нужный сопоставитель из коробки:

new Expectations() {{
    mockObject.methodName(withPrefix("PREFIX"));
}};
person Rogério    schedule 08.01.2015

Я бы использовал пользовательский сопоставитель. Оказывается, пример на сайте jmock о том, как написать собственный сопоставитель, охватывает написание одного для сопоставления префиксов. Я не буду копировать сюда код, но ссылка http://www.jmock.org/custom-matchers.html

В качестве альтернативы, более ленивый подход состоял бы в том, чтобы просто проверить, содержит ли строка конкретный префикс где-либо в строке. Вы можете сделать это с помощью существующего сопоставителя stringContaining.

oneOf(mockObject).methodName(with(stringContaining("PREFIX"));

Приемлемо ли это в вашем модульном тесте, будет зависеть от строки, префикса и того, что вы тестируете.

person AndyN    schedule 08.01.2015