سؤال

كيف يمكنك اختبار الوحدة FTPWebRequest وFTPWebResponse من خلال MOQ.

لا يوجد حل صحيح

نصائح أخرى

لا يمكنك وهمية FTPWebRequest أو ftpwebresponse مع موك، لأنه يتيح لك فقط واجهات وهميةأو فصول مجردة.ولا يبدو أن MS كانت تفكر في مجال الاستقرار عند كتابة معظم مساحة الاسم System.Net.هذا هو السبب الرئيسي الذي قمت بطريقته من موك إلى RhinoMocks.

ستحتاج إلى إنشاء كائنات 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top