मेरे पास दो विचार हैं ... एक HttpResponse का नकल करने के लिए, और दूसरा वेब सर्वर अनुकरण करना है।
1. HttpResponse
मजाक मैं इस से पहले मुझे पता था कि जो मजाक ढांचे आप इस्तेमाल किया लिखा था। यहां टाइपमैक का उपयोग करके आप अपनी विधि का परीक्षण कैसे कर सकते हैं।
यह मानता है कि आप, विधि करने के लिए अपने HttpResponse चर पारित विधि बदलते इस प्रकार है:
public void ShowPDF(Stream stream, HttpResponse httpResponse)
बेशक
आप इसके बजाय अपने पृष्ठ वस्तु पर एक संपत्ति के लिए इसे पारित करने के लिए इस बदल जाएगा, अगर यह होता है आपके पेज क्लास का सदस्य
और यहाँ कैसे आप एक नकली HttpResponse मदद से इसका परीक्षण कर सकता है की एक उदाहरण है:
internal void TestPDF()
{
FileStream fileStream = new FileStream("C:\\deleteme\\The Mischievous Nerd's Guide to World Domination.pdf", FileMode.Open);
MemoryStream memoryStream = new MemoryStream();
try
{
memoryStream.SetLength(fileStream.Length);
fileStream.Read(memoryStream.GetBuffer(), 0, (int)fileStream.Length);
memoryStream.Flush();
fileStream.Close();
byte[] buffer = null;
var fakeHttpResponse = Isolate.Fake.Instance<HttpResponse>(Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => fakeHttpResponse.BinaryWrite(null)).DoInstead((context) => { buffer = (byte[])context.Parameters[0]; });
ShowPDF(memoryStream, fakeHttpResponse);
if (buffer == null)
throw new Exception("It didn't write!");
}
finally
{
memoryStream.Close();
}
}
2. एक वेब सर्वर
शायद आप एक वेब सर्वर का अनुकरण करके ऐसा कर सकते हैं अनुकरण। यह पागल लग सकता है, लेकिन ऐसा लगता है कि यह इतना कोड नहीं है। आईआईएस के बाहर वेब फॉर्म चलाने के बारे में कुछ लिंक यहां दिए गए हैं।
Can I run a ASPX and grep the result without making HTTP request?
http://msdn.microsoft.com/en-us/magazine/cc163879.aspx
स्रोत
2012-12-18 16:15:31
मॉक एक HttpResponseBase। – SLaks
httpResponse इस विधि के बाहर घोषित किया गया है? –
@betogrun: परीक्षण के लिए आप किस मॉकिंग फ्रेमवर्क का उपयोग करते हैं? –