Как вы имитируете выходной поток?

Под «выходным потоком» я подразумеваю любой объект, который получает последовательность байтов, символов или чего-то еще. Итак, java.io.OutputStream, но также java.io.Writer, javax.xml.stream.XMLStreamWriter метод writeCharacters и т. Д.

Я пишу макетные тесты для класса, основная функция которого - писать поток данных к одному из них (XMLStreamWriter, как это бывает).

Проблема в том, что поток данных записывается серией вызовов метода записи, но важны не вызовы, а данные. Например, для XMLStreamWriter out эти:

out.writeCharacters("Hello, ");
out.writeCharacters("world!");

эквивалентны этому:

out.writeCharacters("Hello, world!");

На самом деле не имеет значения (для моих целей), что происходит. Будет какая-то конкретная последовательность вызовов, но мне все равно, что это такое, поэтому я не хочу писать ожидания для этой конкретной последовательности. Я просто хочу ожидать, что определенный поток данных будет записан любым способом.

Один из вариантов - переключиться на тестирование на основе состояния. Я мог накапливать данные в буфере и утверждать об этом. Но поскольку я пишу XML, это означало бы сделать некоторые довольно сложные и уродливые утверждения. Мокинг кажется намного лучшим способом решения более серьезной проблемы написания XML.

Так как мне сделать это с помощью имитации?

Я использую Moxie для насмешки, но я интересно узнать о подходах к любой фиктивной библиотеке.

15
задан TheFogger 18 June 2011 в 00:02
поделиться