2012-04-30 10 views
9

मैं विजुअल स्टूडियो 11 में माइक्रोसॉफ्ट फॉक्स के बीटा का उपयोग कर रहा हूं। मैं कैसे सत्यापित कर सकता हूं कि मेरे सिस्टम द्वारा निर्भरता की विधि को परीक्षण के तहत बुलाया गया था?मैं कैसे सत्यापित कर सकता हूं कि एक माइक्रोसॉफ्ट फॉक्स (बीटा) स्टब/शिम कहा जाता था (जैसे राइनो मोक्स में AssertWasCalled)?

उत्तर

12

चूंकि कार्यक्षमता को Microsoft Fakes Beta में सत्यापित नहीं किया गया है, तो नीचे दिया गया कोड एक निर्भरता है कि निर्भरता पर कोई विधि कहलाती है या नहीं। पैरामीटर मानों या उचित कॉल की अन्य स्थितियों का परीक्षण करने के लिए आप true परीक्षण को बढ़ा सकते हैं।

टेस्ट:

[TestMethod] 
public void TestMethod1() 
{ 
    var secondDoItCalled = false; 
    var secondStub = new Fakes.ShimSecond(); 
    secondStub.DoIt =() => { secondDoItCalled = true; }; 
    var first = new First(secondStub); 
    first.DoIt(); 
    Assert.IsTrue(secondDoItCalled); 
} 

क्लास:

public class First 
{ 
    readonly Second _second; 
    public First(Second second) { _second = second; } 
    public void DoIt() { 
     //_second.DoIt(); 
    } 
} 

public class Second {public void DoIt(){}} 

टिप्पणी हटाएं ऊपर लाइन परीक्षण पास देखने के लिए।

8

माइक्रोसॉफ्ट फॉक्स फ्रेमवर्क के साथ व्यवहारिक सत्यापन करने के लिए आपके पास एक अन्य विकल्प है जो Microsoft.QualityTools.Testing.Fakes.Stubs नामस्थान में शामिल StubObserver क्लास का उपयोग करना है। ढांचे का उपयोग करके, आप अपनी निर्भरता के लिए एक स्टब उत्पन्न करते हैं। फिर अपने स्टब पर आप InstanceObserver प्रॉपर्टी को एक नए स्टब ऑब्सर्वर पर सेट कर सकते हैं। StubObserver क्लास का उपयोग करके, आप अपनी निर्भरता में किए गए विधि कॉल "क्वेरी" कर सकते हैं। आपका परीक्षा पद्धति कुछ ऐसा दिखाई देगा नीचे

//Arrange 
var dependency = new StubIDependency { InstanceObserver = new StubObserver() }; 
var sut = new SystemClass(dependency); 

// Act 
sut.DoSomething(); 

// Assert 
var observer = (StubObserver)dependency.InstanceObserver;  
Assert.IsTrue(
    observer.GetCalls().Any(call => call.StubbedMethod.Name == "DoSomething")); 
+0

यह लागू किसी भी तरह 'AllInstances' द्वारा shimming के मामले को है? – SerG

संबंधित मुद्दे