2010-11-16 4 views
4

XmlTextReader Je produis un fichier XML dans mon test unitaire en utilisantlinq.Xelement Convertir flux pour

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

    rssParser(rssUri) 
End Sub 

et la consommation de la uri avec un XmlTextReader

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

Je veux supprimer le test unitaire dépend d'un fichier physique et utilise un flux à la place, mais mes efforts jusqu'ici n'ont abouti à rien. (Est-ce la meilleure pratique?)

J'utilise NMock2 pour moquer si je devrais faire quelque chose avec ça.

Répondre

0

xmlFile est un XDocument, qui peut être sauvé dans un MemoryStream, reportez-vous à la question suivante SO pour plus de détails:

Vous pouvez alors faire votre méthode accepter un Stream générique, qui peut alors être un MemoryStream (dans le test unitaire) ou un FileStream.

+1

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. – sschaef

+0

@sschaef: Etes-vous sûr? Il demande comment il peut convertir sa variable 'xmlFile' en un flux sans avoir à l'écrire sur le disque (voir aussi le titre de la question), et la question SO liée répond à cette question. Certes, ce n'est pas une très bonne réponse (j'étais probablement pressé à l'époque, elle pourrait être prolongée par une explication plus détaillée et un résumé des parties pertinentes de la question liée), mais elle répond à la question. Êtes-vous toujours en désaccord? – Heinzi

+1

Ok, très strictement parlant, il fournit une réponse. Mais d'abord, la question liée concerne C#, ce qui signifie que la solution ne peut pas être directement déplacée vers VB.NET. Deuxièmement, même que c'est une réponse de lien seulement. À mon avis, cela en fait plus un commentaire pour un indice sur la façon de résoudre la question. – sschaef

8

Plutôt que de forcer un XmlTextReader via un flux, si vous venez juste d'ajouter XmlReader, vous pouvez simplement utiliser XNode.CreateReader. C'est une approche beaucoup plus simple que d'enregistrer dans un flux, à moins que votre API force à utiliser un flux ou un XmlTextReader.

Questions connexes