اختبار الوحدة FTPWebRequest/FTpWebResponse
-
14-11-2019 - |
سؤال
كيف يمكنك اختبار الوحدة FTPWebRequest وFTPWebResponse من خلال MOQ.
لا يوجد حل صحيح
نصائح أخرى
لا يمكنك وهمية FTPWebRequest أو
ستحتاج إلى إنشاء كائنات FTPWEB * الخاصة بك وتمريرها إلى معالجتك.
غير ممكن مع Mock أيضًا بسبب FTPWebResponse
لا يوجد منشئون مكشوفون للسماح باستخلاص شيء ما منه.
إليكم كيف كتبت اختباري في موقف مماثل.
الطريقة تحت الاختبار: ExceptionContainsFileNotFound(Exception ex)
يحتوي على المنطق التالي:
if (ex is WebException)
{
var response = (ex as WebException).Response;
if (response is FtpWebResponse)
{
if ((response as FtpWebResponse).StatusCode == FtpFileNotFoundStatus)
{
return true;
}
}
}
من أجل اختباره قمت بتنفيذ خدعة سريعة.
try
{
var request = WebRequest.Create("ftp://notexistingfptsite/");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.GetResponse();
}
catch (WebException e)
{
// trick :)
classUnderTest.FtpFileNotFoundStatus = FtpStatusCode.Undefined;
var fileNotFoundStatus = classUnderTest.ExceptionContainsFileNotFound(e);
Assert.That(fileNotFoundStatus, Is.True);
}
(بالطبع لا يتم عرض FtpFileNotFoundStatus للعالم.)
لذلك يمكنني استخدام إطار القرن.
يمكنه التعامل مع إنشاء المثيل حتى لو لم يكن هناك منشئ عام، وقراءة الخصائص فقط وأكثر من ذلك.
مثال: giveacodicetagpre.