Unit testing Moq-在不检查每个参数的情况下模拟ILog.InfoFormat

Unit testing Moq-在不检查每个参数的情况下模拟ILog.InfoFormat,unit-testing,mocking,tdd,moq,Unit Testing,Mocking,Tdd,Moq,我正在对我们现有的一些日志进行单元测试 在代码示例log.InfoFormat中的MyLoggingMethod(扩展方法)下面,应该使用大量参数调用。我不关心传入了多少个参数,也不关心内容,我只想验证从第一个参数记录的一些东西 我已经编好了。我有很多参数——但这正是我想要实现的 var logMock = new Mock<ILog>(); var log = logMock.Object; log.MyLoggingMethod(n

我正在对我们现有的一些日志进行单元测试

在代码示例log.InfoFormat中的MyLoggingMethod(扩展方法)下面,应该使用大量参数调用。我不关心传入了多少个参数,也不关心内容,我只想验证从第一个参数记录的一些东西

我已经编好了。我有很多参数——但这正是我想要实现的

        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));
我知道我可以放很多,但如果可能的话我想避免。我只想检查第一个,以确保有东西在那里。

It.IsAny()
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[]>()));
var logMock=new Mock();
var log=logMock.Object;
log.MyLoggingMethod(newmonkey());
logMock.Verify(moqLog=>moqLog.InfoFormat(It.Is(x=>x.Contains(“诸如此类”)),It.IsAny());
更具体一点:It.IsAny(
object[]
)做了这个把戏,因为签名可能是
InfoFormat(字符串格式,params
object[]`args)`
    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[]>()));