web-dev-qa-db-ja.com

Moq.It.IsAnyを使用して文字列をテストすることは、何かで始まります

たとえば、Moqを使用して、メソッドが「ABC」で始まる文字列を受け入れると言うことは可能ですか。

例として、次のようなものがあります。

logger.Verify(x => x.WriteData(Moq.It.IsAny<string>().StartsWith("ABC")), Times.Exactly(3));

それはコンパイルされませんが、うまくいけばそれは私のポイントを示しています

32
Jon

試してください:

logger.Verify(x => x.WriteData(Moq.It.Is<string>(str => str.StartsWith("ABC"))), Times.Exactly(3));

あなたはそれの別の例を見ることができます。

// matching Func<int>, lazy evaluated
mock.Setup(foo => foo.Add(It.Is<int>(i => i % 2 == 0))).Returns(true); 

これはMoqのドキュメントからのものです: http://code.google.com/p/moq/wiki/QuickStart

50
eyossi

使用してみてください:

Moq.It.Is<string>(x => x.StartsWith("ABC"))
4
detaylor