2012-05-17 25 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++; 

私は、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

「ITest」モックの構成インスタンスを取得するのが難しいです。サンプルコードはそのまま動作しますが、それ以外の場合は 'mock 'インスタンスを取得すると' MockException:すべての呼び出しに対応する設定が必要です。 ' ' var mock = repo.Create ().Object; ' または 'var mock = repo.Of ().First();' 私は何か間違っていると思いますか? –

関連する問題