Я пытаюсь пройти модульное тестирование и TDD способ выполнения задач, но я столкнулся с проблемой, я не уверен, что делать.
У меня есть коллекция, которая сохраняет себя на диск, используя XDocument и XmlWriter. Я знаю, что вы не должны записывать файл на диск, а затем проверять его, чтобы у меня был вывод XmlWriter в поток памяти, а затем я проверил содержимое потока памяти. Функция выглядит так:
public void Save()
{
using (XmlWriter xmlWriter = XmlWriter.Create(m_StreamProvider.SaveFileStream(m_FilenameProvider.Filename)))
{
XDocument xDoc = new XDocument(new XElement("BookmarkCollection",
Items.Select(bookmark => new XElement("Bookmark",
new XElement("Name", bookmark.Name),
new XElement("Link", bookmark.Link),
new XElement("Remarks", bookmark.Remarks),
new XElement("DateAdded", bookmark.DateAdded),
new XElement("DateLastAccessed", bookmark.DateLastAccessed))
)
));
xDoc.Save(xmlWriter);
}
}
И юнит тест
[Test]
public void Save_OneItemCollection_XmlCreatedCorrectly()
{
//Arrange
MemoryStreamProvider streamProvider = new MemoryStreamProvider();
IBookmarkCollection collection = XBookmarkTestHelpers.GetXBookmarkCollection(streamProvider);
IBookmark bookmarkToAdd = XBookmarkTestHelpers.GetIBookmark("myLink");
collection.Add(bookmarkToAdd);
//Act
collection.Save();
//Assert
streamProvider.WriteStrean.Position = 0;
String generatedXml = Encoding.Default.GetString(streamProvider.WriteStrean.GetBuffer());
Assert.IsTrue(String.Equals(generatedXml, m_ExpectedOneItemString), "XML does not match");
}
Утверждение здесь не слишком хрупкое (я знаю, что мог бы использовать String.Compare (), но у него были бы подобные проблемы.), Я проверяю правильную вещь? Я издеваюсь не над тем?
Весь вклад приветствуется!