Bender
Bender

Reputation: 1688

Convert linq.Xelement to stream for XMLTextReader

I am producing an XML file in my unit test using

Public Sub rssParserTest
   Dim Const rssUri as String = "rssTestFile.xml"
   Dim xmlFile = <rss version="2.0">
   ...
                 </rss>
   xmlFile.save(rssUri)

  rssParser(rssUri)
End Sub

and consuming the uri with an XMLTextReader

Public Sub rssParser(ByVal rssUri as string)
    Dim rssXml = New XmlTextReader(rssUri)
    rssXml.read
    ...
End Sub

I want to remove the unit test dependency on a physical file and use a stream instead but my efforts so far have come to nought. (Is this best practise?)

I am using NMock2 for mocking if I should be doing something with that.

Upvotes: 5

Views: 6554

Answers (2)

Heinzi
Heinzi

Reputation: 172380

xmlFile is an XDocument, which can be saved into a MemoryStream, see the following SO question for details:

You can then make your method accept a generic Stream, which can then be a MemoryStream (in the unit test) or a FileStream.

Upvotes: 0

Jon Skeet
Jon Skeet

Reputation: 1502016

Rather than force an XmlTextReader via a stream, if you just nead an XmlReader you can just use XNode.CreateReader. That's a much simpler approach than saving to a stream, unless your API forces you to use a stream or an XmlTextReader.

Upvotes: 10

Related Questions