【问题标题】:Convert linq.Xelement to stream for XMLTextReader将 linq.Xelement 转换为 XMLTextReader 的流
【发布时间】:2010-11-16 20:30:47
【问题描述】:

我在我的单元测试中使用

生成一个 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

并通过 XMLTextReader 使用 uri

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

我想删除对物理文件的单元测试依赖并改用流,但到目前为止我的努力都付诸东流。 (这是最佳做法吗?)

如果我应该用它做点什么,我正在使用 NMock2 进行模拟。

【问题讨论】:

    标签: vb.net unit-testing mocking


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      xmlFile 是一个XDocument,可以保存到MemoryStream 中,详情见以下SO问题:

      然后您可以让您的方法接受一个通用的Stream,然后它可以是一个MemoryStream(在单元测试中)或一个FileStream

      【讨论】:

      • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
      • @sschaef:你确定吗?他询问如何将他的xmlFile 变量转换为流,而无需将其写入磁盘(另请参见问题标题),链接的 SO 问题回答了该问题。诚然,这不是一个非常的答案(当时我可能很着急;可以通过更详细的解释和链接问题相关部分的摘要来扩展它),但确实如此回答问题。你还是不同意吗?
      • 好的,严格来说它确实提供了答案。但首先,链接的问题是关于 C#,这意味着他的解决方案不能直接移动到 VB.NET。其次,即使它只是一个链接的答案。在我看来,这更像是一个关于如何解决问题的提示的评论。
      • @sschaef:我添加了一些上下文。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2010-10-19
      • 2021-07-04
      • 2012-11-02
      • 1970-01-01
      相关资源
      最近更新 更多