Под «выходным потоком» я подразумеваю любой объект, который получает последовательность байтов, символов или чего-то еще. Итак, 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 для насмешки, но я интересно узнать о подходах к любой фиктивной библиотеке.