2012-05-17 12 views
8

का उपयोग कैसे करें Moq.MockRepository.Of() और Moq.MockRepository.OneOf() का उचित उपयोग क्या है? मैंने इसे समझने की कोशिश करने के लिए ऐसा कुछ करने की कोशिश की है।Moq.MockRepository.Of() विधि

var mr = new MockRepository(MockBehavior.Strict); 
var m = mr.Of<ISomeInterface>(); 
foreach (var obj in m) 
    cnt++; 

मुझे पता चला है कि सीएनटी केवल अंत तक बढ़ता रहता है। क्या देता है? इसके बारे में दस्तावेज़ीकरण आगामी नहीं है।

उत्तर

9

आप अभिव्यक्तियों के माध्यम से मॉक्स बनाने के लिए Moq.MockRepository.Of() का उपयोग कर सकते हैं। यह एक उदाहरण द्वारा सबसे अच्छा समझाया गया है:

public interface ITest 
{ 
    String Say(); 
    Int32 DoSomething(Int32 a, Int32 b); 
} 

class Program 
{ 
    public static void Main() 
    { 
     var repo = new MockRepository(MockBehavior.Strict); 
     var mock = repo.Of<ITest>() 
         .Where(s => s.Say() == "Hi!") 
         .Where(s => s.DoSomething(5, 4) == 20) 
         .Where(s => s.DoSomething(4, 5) == 9) 
         .Where(s => s.DoSomething(It.IsAny<Int32>(), 7) == 99) 
         .First(); 

     Console.WriteLine(mock.Say());     // prints Hi! 
     Console.WriteLine(mock.DoSomething(5, 4));  // prints 20 
     Console.WriteLine(mock.DoSomething(4, 5));  // prints 9 
     Console.WriteLine(mock.DoSomething(23423, 7)); // prints 99 
     Console.WriteLine(mock.DoSomething(0, 0));  // Fail due to MockBehavior.Strict 

     Console.ReadKey(); 
    } 
} 
+0

मुझे 'आईटेस्ट' मॉक का कॉन्फ़िगर किया गया उदाहरण प्राप्त करने में कठिनाई हो रही है। नमूना कोड इस तरह काम करता है, लेकिन अन्यथा 'मॉक' इंस्टेंस को प्राप्त करने के परिणामस्वरूप 'मॉकएक्सप्शन: मॉक के सभी आमंत्रणों में एक समान सेटअप होना चाहिए।' 'var mock = repo.Create ()। ऑब्जेक्ट;' या 'var mock = repo.Of ()। फर्स्ट();' मुझे लगता है कि मैं कुछ गलत कर रहा हूं? –