【问题标题】:Moq - mocking ILog.InfoFormat without checking every argsMoq - 在不检查每个参数的情况下模拟 ILog.InfoFormat
【发布时间】:2013-11-07 16:09:27
【问题描述】:

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

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

我已经编写了 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 - 但我想尽可能避免这种情况。我只想检查第一个以确保那里有东西。

【问题讨论】:

    标签: unit-testing mocking tdd moq


    【解决方案1】:
    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[]>()));
    

    【讨论】:

    • 更具体一点:It.IsAny(object[]) 成功了,因为签名可能是InfoFormat(string format, params object[]`args)`
    猜你喜欢
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2014-03-29
    • 2020-01-11
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多