当前位置: 首页 > 知识库问答 >
问题:

嘲笑LocalDateTime时如何嘲笑分钟值?

韩捷
2023-03-14

我提到了这个答案,我该如何模拟java。时间本地日期。now()关于如何模拟我的LocalDateTime。now()调用。我基本上遵循了所有步骤,但只使用了LocalDateTime而不是LocalDate。

我的代码的功能是这样的,它应该只在一小时的第15或45分钟运行。因此,我将LOCAL\u DATE\u TIME静态变量设置为:

私有final staticLocalDateTimeLOCAL_DATE_TIME=LocalDateTime.of(2019,10,15,19,15,22);

然后在我的@Before测试方法中,我有以下内容:

    @Mock
    private Clock clock;

    private Clock fixedClock;
    private final static LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019,10,15,19,15,22);

这是2019-10-15T19:15:22。

    @Before
    public void before(){
        fixedClock = Clock.fixed(LOCAL_DATE_TIME.toLocalDate().atStartOfDay(ZoneId.systemDefault()).toInstant(), ZoneId.systemDefault());
        doReturn(fixedClock.instant()).when(clock).instant();
        doReturn(fixedClock.getZone()).when(clock).getZone();
    }

这是我正在测试的代码

@Override
public void punctuate(long l) {
    LocalDateTime localDateTime = LocalDateTime.now(clock);
    int currentMinute = localDateTime.getMinute();

    if(currentMinute == 15 || currentMinute == 45) { ....

当我在上面的第一行放置断点时,我看到localDateTime设置为2019-10-15T00:00

所以看起来日期被嘲笑得很好,但是我不能嘲笑时间。我该怎么做才能嘲笑分钟值呢?

共有1个答案

周峻
2023-03-14

转换为本地日期将删除您的本地日期时间的时间部分,所以不要这样做。

如下初始化固定时钟:

fixedClock = Clock.fixed(
  LOCAL_DATE_TIME.atZone(ZoneId.systemDefault()).toInstant(), 
  ZoneId.systemDefault()
);
 类似资料:
  • 由于各种原因,我的单元测试环境无法访问启动ignite所需的环境。我不需要ignite来启动测试,我希望代码忽略对ignite的调用。开始()。我该怎么做? 我尝试过模拟点火,但当我尝试模拟start()方法时,它会抛出一个错误。 这会导致以下错误: 组织。莫基托。例外情况。误用。MissingMethodInvocationException:when()需要的参数必须是“模拟的方法调用”。例如

  • 问题内容: 我在带有打字稿的React Router v5.1.2中使用UseHistory挂钩吗?运行单元测试时,我遇到了问题。 TypeError:无法读取未定义的属性“ history”。 我也尝试使用,但仍然无法正常工作。 问题答案: 浅化使用的反应功能组件时,我需要相同的内容。 在我的测试文件中解决了以下模拟问题:

  • 运行jUnit时的异常 我想测试这个类,下面是测试方法 运行junit会产生以下异常

  • 以下是日志供参考: IllegalStateException:无法转换名为com.xyz.TestLoad的类。原因:java.io.ioException:无效常量类型:在org.powermock.core.classloader.mockClassLoader.loadModifiedClass(MockClassLoader.java:180)在org.powermock.core.cl

  • 当我试图模仿javax.ws.rs.core 时,我得到一条错误消息: 无法创建JAX-RS运行时委托 为什么会发生这种情况? 但是,当我试图嘲笑HttpServlet响应时,这是没有问题的!

  • 我想在我的发票类中存根methot generateFerenceNumber():