Я использую jmock, чтобы смоделировать OutputStream и установить ожидания для данных, которые записываются в него.
Так что у меня есть ожидание, которое выглядит примерно так
oneOf(stream).write(byteArrayMatching("Some string"));
(byteArrayMatching
) - фабрика для специального сопоставителя.
Это все работает нормально, за исключением случаев, когда тест не проходит, потому что тестируемый класс записывает неверные данные, я получаю сообщение об ошибке, похожее на это:
java.lang.AssertionError: unexpected invocation: stream.write([<60>, <63>, ...])
Довольно сложно определить, что именно не так с данными, посмотрев на последовательность байтов (я еще не удосужился запомнить ASCII). Это в значительной степени заставляет меня запускать тест в отладчике, чтобы выяснить, что не так.
Мой вопрос: есть ли способ каким-то образом зарегистрировать средство форматирования с помощью фиктивного объекта или объекта Mockery, который может довольно просто напечатать значение параметра? Понятно, что jmock уже выполняет некоторую симпатичную печать, поскольку вышеприведенное не является выводом byte[].toString()
, но я не могу найти ничего в документах API, предлагающих способ настройки этой логики симпатичной печати