我正在对我们现有的一些日志进行单元测试
在我的代码示例中的MyLoggingMethod(扩展方法)下面,应该使用大量参数调用log.InfoFormat。我不在乎传递了多少参数 - 或者内容 - 我只想验证从第一个参数记录的东西。
我已经制作了It.IsAnyLoadOfParameters - 但这正是我想要实现的目标!
var logMock = new Mock<ILog>();
var log = logMock.Object;
log.MyLoggingMethod(new Monkey());
logMock.Verify(moqLog => moqLog.InfoFormat(It.Is<string>(x => x.Contains("Blah blah blah")), It.IsAnyLoadOfParameters));
和log.MyLoggingMethod中的那种东西将是
log.InfoFormat("Blah blah blah {0} {1} {2} {3}", 1, "something", "blah", "four");
我知道我可以放很多It.IsAny - 但我想尽可能避免这种情况。我只是想检查第一个,以确保那里有东西。
答案 0 :(得分:2)
It.IsAny<object[]>()
做了伎俩!
var logMock = new Mock<ILog>();
var log = logMock.Object;
log.MyLoggingMethod(new Monkey());
logMock.Verify(moqLog => moqLog.InfoFormat(It.Is<string>(x => x.Contains("Blah blah blah")), It.IsAny<object[]>()));