微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最小起订量设置中的 DateTimeOffset 抛出异常

如何解决最小起订量设置中的 DateTimeOffset 抛出异常

我有一个记录器的方法

this.logger.LogDebug("Engine start run at: {time}",DateTimeOffset.Now);
this.logger.LogDebug("Engine stopped at: {time}",DateTimeOffset.Now);

我创建了一个带有 moq 设置的 UT 来检查这种情况:

var firstMessageStartLoggingTime = $"Engine start run at: {DateTimeOffset.Now}";
var secondMessageStoppedLoggingTime = $"Engine stopped at: {DateTimeOffset.Now}";

_mockLogger.Setup(e => e.LogDebug(firstMessageStartLoggingTime)).Verifiable(); 
_mockLogger.Setup(e => e.LogDebug(secondMessageStoppedLoggingTime)).Verifiable();

并收到此异常:

Message: 
Moq.MockException : Mock<ILoggerAdapter<Engine>:1>:
This mock Failed verification due to the following:

   ILoggerAdapter<Engine> e => e.LogDebug("Engine start run at: 6/4/2021 8:52:16 AM +03:00",[]):
   This setup was not matched.

   ILoggerAdapter<Engine> e => e.LogDebug("Engine stopped at: 6/4/2021 8:52:16 AM +03:00",[]):
   This setup was not matched.

然后我尝试通过添加 DateTimeProvider 类来更新此案例:

public class DateTimeProvider
{
    public static DateTime Today
    {
        get
        {
            if (!TodayValue.HasValue)
            {
                return DateTime.Today;
            }
            else
            {
                return TodayValue.Value;
            }
        }
    }

    public static DateTime Now
    {
        get
        {
            if (!NowValue.HasValue)
            {
                return DateTime.Now;
            }
            else
            {
                return NowValue.Value;
            }
        }
    }

    public static DateTime UtcNow
    {
        get
        {
            if (!UtcNowValue.HasValue)
            {
                return DateTime.UtcNow;
            }
            else
            {
                return UtcNowValue.Value;
            }
        }
    }

    internal static DateTime? TodayValue { get; set; }

    internal static DateTime? NowValue { get; set; }

    internal static DateTime? UtcNowValue { get; set; }

并用它更新了这个方法方法中的代码):

this.logger.LogDebug("Engine start run at: {time}",DateTimeOffsetProvider.Now);
this.logger.LogDebug("Engine stopped at: {time}",DateTimeOffsetProvider.Now);

并更新了 UT:

DateTime expected = DateTime.Now;
DateTimeProvider.TodayValue = expected;
var firstMessageStartLoggingTime = $"Engine start run at: {expected}";
var secondMessageStoppedLoggingTime = $"Engine stopped at: {expected}";

_mockLogger.Setup(e => e.LogDebug(firstMessageStartLoggingTime)).Verifiable(); 
_mockLogger.Setup(e => e.LogDebug(secondMessageStoppedLoggingTime)).Verifiable();

错误仍然存​​在。 请帮助:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?