使用Moq.It.IsAny测试字符串以某事开始

Jon*_*Jon 29 .net c# unit-testing moq

是否可以使用Moq来说一个方法接受一个以"ABC"开头的字符串.

举个例子:

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

那不会编译,但希望它说明了我的观点

eyo*_*ssi 50

尝试:

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

你可以看到It.Is的另一个例子:

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

来自Moq文档:http://code.google.com/p/moq/wiki/QuickStart


det*_*lor 7

尝试使用:

Moq.It.Is<string>(x => x.StartsWith("ABC"))
Run Code Online (Sandbox Code Playgroud)