2009-05-17 9 views
5

私はMoq 3.xを使用しようとしていますが、それはうまく機能します。しかし、私は解決する方法を理解できないという問題があります。Moq with Action引数

public interface ITestSpec 
{ 
    bool Run(Action<string, string> onIncorrectResponse); 
} 

を考えると、私は次のことをしようとしています:

var passingTestSpec = new Mock<ITestSpec>(); 
passingTestSpec 
    .Setup(m => m.Run(null)) 
    .Returns(true); 

Action<string, string> fakeAction = 
    (expected, actual) => { throw new Exception("Should not run"); }; 

Assert.IsTrue(passingTestSpec.Object.Run(fakeAction)); 

私の問題はpassingTestSpec.Object.Run上の任意の呼び出し(...何らかのアクションが...)がfalseを返すということです。 Moqライブラリは、Setup()呼び出しでRun()に渡した引数にアクションを一致させようとしているようで、失敗しているようです。実際にRun()呼び出しでどのようなアクションを実行しても問題ありませんが、それでもfalseを返しています。

アイデア?

[編集]私は何かを発見しました。セットアップラインを

.Setup(m => m.Run(fakeAction)) 

と置き換えると、テストに合格します。しかし、.Run()メソッドが呼び出されるアクションはわからないので、これは解決策ではありません。誰もがIt.IsAnyと同等のアクションを知っていますか?

答えて

13

何が悪いの:

It.IsAny<Action<string, string>>() 
+0

LOL私は誰かが解決策を見つけるために起こっている知っている必要があります...私はこの上でいくつかの時間を無駄に考えて:(私はそれで行くよおかげで、それは良いでしょう私よりも。 –

関連する問題