Я пытаюсь выполнить модульное тестирование модификации структуры XML, например:
<element1>
<open file="otherfile.xml">
</element1>
Предположим, что otherfile.xml
содержит:
<element2>
<open file="anotherfile.xml">
<happytag/>
</element2>
И это anotherfile.xml
выглядит так:
<element3>
<sadtag/>
</element3>
Правильная модификация копирует и вставляет код из файла, который нужно открыть, в код, который вызвал тег open
. Поэтому я ожидаю такую структуру:
<element1>
<element2>
<element3>
<sadtag/>
</element3>
<happytag/>
</element2>
</element1>
Проблема, с которой я столкнулся, заключается в том, что я не уверен, что делать с модульным тестированием создания этой структуры. В идеале, и то, что я пытался до сих пор (безуспешно), - это создать этот модульный тест, чтобы мне не нужно было делать какие-либо вызовы в файловой системе для создания структуры. Для этого я создаю фиктивный объект, который выглядит как входной поток, который открывает файл, но на самом деле просто возвращает поток, созданный из текста
<element1>
<open file="otherfile.xml">
</element1>
Проблема, с которой я сталкиваюсь в этом подходе, состоит в том, что я не могу найти способ ввести текст otherfile.xml
, чтобы фиктивный объект возвращал текст:
<element2>
<open file="anotherfile.xml">
<happytag/>
</element2>
Еще одна вещь, которую я пробовал, это поместить текст anotherfile.xml
в open file=""
, например open file="<element3>...</element3>">
. Это не работает, потому что анализатор XML жалуется, что это недопустимый XML.
Я мог бы также создать эти xml-файлы из строк перед запуском теста, а затем удалить их после теста.