Под "выходным паром" понимается любой объект, который получает последовательность байтов, или символов или что-то еще. Итак, java.io.OutputStream, но также java.io.Writer, javax.xml.stream.XMLStreamWriter метод writeCharacters и т.д.
Я пишу mock-based тесты для класса, основной функцией которого является запись потока данных в один из них (XMLStreamWriter, как это бывает).
Проблема заключается в том, что поток данных записывается в ряд вызовов метода записи, но главное - это не вызовы, а данные. Например, учитывая XMLStreamWriter out
, они:
out.writeCharacters("Hello, ");
out.writeCharacters("world!");
Соответствует этому:
out.writeCharacters("Hello, world!");
Это действительно не имеет значения (для моих целей), что происходит. Будет определенная последовательность вызовов, но мне все равно, что это такое, поэтому я не хочу писать ожидания для этой конкретной последовательности. Я просто хочу ожидать, что какой-то поток данных будет написан любым способом.
Один из вариантов - переключиться на тестирование на основе состояния. Я мог бы накапливать данные в буфере и делать утверждения об этом. Но поскольку я пишу XML, это означало бы создание довольно сложных и уродливых утверждений. Mocking кажется гораздо лучшим способом справиться с большей проблемой написания XML.
Итак, как мне это сделать с макетом?
Я использую Moxie для насмешки, но мне интересно узнать о подходах с любой насмешливой библиотекой.