XDocument
पर नकल करने की कोशिश न करें, मैं XDocument (मैं Moq का उपयोग कर रहा हूं) का नकल कैसे कर सकता हूं। यह समस्या नहीं है - यह फ़ाइल सिस्टम तक पहुंच है जो परेशान है। आप एक Stream
पास कर सकता है बजाय करने के लिए प्रकट लिखने के लिए:
public static void GenerateManifestFile(Stream output) {
var doc = new XDocument();
...
... xml stuff added to doc
...
doc.Save(output);
}
तो फिर तुम एक MemoryStream
साथ कि परीक्षण कर सकते हैं, लेकिन वास्तविकता में प्रकट पथ के लिए एक FileStream
का उपयोग करें। तुम भी इस विधि का आंतरिक ([InternalsVisibleTo]
का उपयोग कर ताकि आप अभी भी परीक्षण से पहुंच सकते हैं) और की तर्ज पर एक सार्वजनिक parameterless अधिभार बना सकता है:
using (Stream output = File.OpenWrite(manifestFilePath))
{
GenerateManifestFile(output);
}
तब आप उस कोड का परीक्षण नहीं है, लेकिन आप कर सकते हैं अपने सभी असली तर्क का परीक्षण करें।
स्रोत
2012-04-19 19:29:21
+1: इसे सार्वजनिक विधि में 'उपयोग' भाग में विभाजित करना + आंतरिक कार्यकर्ता वास्तव में अच्छी युक्ति है। –