将linq.Xelement转换为XMLTextReader的流

Ben*_*der 5 vb.net unit-testing mocking

我在单元测试中使用生成XML文件

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

  rssParser(rssUri)
End Sub
Run Code Online (Sandbox Code Playgroud)

并使用XMLTextReader消耗uri

Public Sub rssParser(ByVal rssUri as string)
    Dim rssXml = New XmlTextReader(rssUri)
    rssXml.read
    ...
End Sub
Run Code Online (Sandbox Code Playgroud)

我想删除对物理文件的单元测试依赖性并使用流而不是我到目前为止的努力已经化为乌有.(这是最佳做法吗?)

我正在使用NMock2进行嘲弄,如果我应该做的那样.

Jon*_*eet 10

而不是强制XmlTextReader通过流,如果你只是一个XmlReader你可以使用XNode.CreateReader.这比保存到流更简单,除非您的API 强制您使用流或XmlTextReader.


Hei*_*nzi 0

xmlFile是一个XDocument,可以保存到 a 中MemoryStream,有关详细信息,请参阅以下SO问题:

然后,您可以使您的方法接受泛型Stream,该泛型可以是 a MemoryStream(在单元测试中)或 a FileStream