سؤال

وأنا أحاول تصحيح قانون بلدي الذي يتم تنفيذه من مشروع اختبار وحدة، ولكن عندما أحاول أن خطوة إلى الأسلوب، فإنه يمر فقط مباشرة على عدم ضرب السطر التالي وتوقف داخل هذا الأسلوب. هذه الطريقة على فئة والتي هي في مشروع آخر، ولكن تم بناء كافة التعليمات البرمجية في وضع التصحيح وحاولت تنظيف وإعادة بناء الحل مع أي فرح.

ولكن، هذا حدث فقط منذ أضفت كتلة مكرر إلى الأسلوب. عندما إزالته وإعادة بناء، ويمكنني أن تدخل غرامة. غريب؟

وأنا باستخدام Visual Studio 2010 بيتا 1، يمكن أن يكون هذا مجرد خلل؟

هل كانت مفيدة؟

المحلول

وكتل مكرر تستخدم التنفيذ المؤجل - يعني: حتى تبدأ في الواقع بالتكرار عبر البيانات، يتم تنفيذ أي شيء

.

وهكذا: تم كرر البيانات؟ وأي شيء حلقات على القيم؟ إذا كنت بحاجة إلى إضافة منطق التحقق من صحة الذي يعمل في أقرب وقت ممكن، تحتاج حاليا طريقتين:

public static IEnumerable<int> GetNumbers(int from, int to) {
    // this validation runs ASAP (not deferred)
    if (to < from) throw new ArgumentOutOfRangeException("to");
    return GetNumbersCore(from, to);
}
private static IEnumerable<int> GetNumbersCore(int from, int to) {
    // this is all deferred
    while (from <= to) {
        yield return from++;
    }
}

نصائح أخرى

ومارك هو الصحيح. يتم تأجيل طريقة تنفيذها وأنت لا تستطيع خطوة الى الطريقة حتى ينفذ مكرر في الواقع.

وعندما كنت بحاجة إلى تصحيح كتلة مكرر في اختبار وحدة أفعل ما يلي: ويسمى تفترض طريقة GetStuff.

[TestMethod]
public void TestGetStuff() {
  var obj = GetStuffObje();
  var list = obj.GetStuff().ToList();
}

والدعوة .ToList () سيجبر مكرر لتنفيذ على الانتهاء. I ثم تعيين نقطة توقف داخل طريقة GetStuff وبدء جلسة التصحيح

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