هل يمكنني ضبط التوقعات على أنواع الخلد التي تم إنشاؤها بالمواد؟

StackOverflow https://stackoverflow.com/questions/6045769

  •  15-11-2019
  •  | 
  •  

سؤال

أحتاج إلى تطبيق مبادلة فقط ولكن أيضا لإضافة التحقق الضروري للتأكد من أن طرق معينة تم استدعاؤها بالترتيب الصحيح.أستطيع أن أتخيل شيئا مثل الخلد + وهمية من شأنه أن يعطيني هذا الخيار.هل يعرف أي شخص ما إذا كانت الشامات هذه الميزة؟

يجب أن يكون هذا الرمز مفيدا: giveacodicetagpre.

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

المحلول

Moles aim to give stubs (and not mocks) for everything, even for static or sealed methods. It's written in the Moles manual that they are not aiming the mocking aspect like others mocking frameworks : they offer isolation, not mocks. If you want to check calls on your Moles, you have to do your own way. For example:

    bool called = false;
    MDisposableObject.Constructor = (@this) =>
    {
        var mole = new MDisposableObject(@this)
        {
            Dispose = () =>
                {
                    Assert.IsFalse(called);
                    called=true;
                    //if you want to call the original implementation:
                    MolesContext.ExecuteWithoutMoles(() => (@this).Dispose());
                    //or do something else, even nothing
                }

        };
    };

Only Typemock Isolator (powerfull but expensive) and JustMock of Telerik (new concurrent, also not free) enable mocking features for everything.
If you have some interfaces, delegates and virtual method, use free mocking framework like Moq or RhinoMocks.

A warning about my example: until now I didn't found how to call the orignal constructor, I mean something like

var mole = new SDisposable();
(@this) = mole;
new MDisposable(mole) {...};

Actually, from what I read on msdn, it's not possible... I hope following releases will enable that.

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