Aem 如何使用mockito模拟getWcmMode()

Aem 如何使用mockito模拟getWcmMode(),aem,wcm,Aem,Wcm,在AEM中,有一个Java使用类,其中存在以下代码getWcmMode().isEdit() 现在,我正在努力在测试java类中使用mockito模拟这个对象。有什么方法可以做到这一点吗?getWcmMode()是WCMUsePojo中的最终方法,默认情况下mockito不支持模拟最终方法 您必须通过在classpath中创建一个名为org.mockito.plugins.MockMaker的文件来启用它(将其放入test resources/mockito extensions文件夹),并放置

在AEM中,有一个Java使用类,其中存在以下代码getWcmMode().isEdit()

现在,我正在努力在测试java类中使用mockito模拟这个对象。有什么方法可以做到这一点吗?

getWcmMode()
WCMUsePojo
中的最终方法,默认情况下mockito不支持模拟最终方法

您必须通过在classpath中创建一个名为
org.mockito.plugins.MockMaker
的文件来启用它(将其放入test resources/mockito extensions文件夹),并放置以下单行

mock-maker-inline
然后,您可以使用
when
像往常一样指定函数返回值-

  @Test
  public void testSomeComponetnInNOTEDITMode() {
    //setup wcmmode
    SightlyWCMMode fakeDisabledMode = mock(SightlyWCMMode.class);
    when(fakeDisabledMode.isEdit()).thenReturn(false);

    //ComponentUseClass extends WCMUsePojo
    ComponentUseClass fakeComponent = mock(ComponentUseClass.class);
    when(fakeComponent.getWcmMode()).thenReturn(fakeDisabledMode);

    assertFalse(fakeComponent.getWcmMode().isEdit());

    //do some more not Edit mode testing on fakeComponent.

  }
getWcmMode()
WCMUsePojo
中的最终方法,默认情况下mockito不支持模拟最终方法

您必须通过在classpath中创建一个名为
org.mockito.plugins.MockMaker
的文件来启用它(将其放入test resources/mockito extensions文件夹),并放置以下单行

mock-maker-inline
然后,您可以使用
when
像往常一样指定函数返回值-

  @Test
  public void testSomeComponetnInNOTEDITMode() {
    //setup wcmmode
    SightlyWCMMode fakeDisabledMode = mock(SightlyWCMMode.class);
    when(fakeDisabledMode.isEdit()).thenReturn(false);

    //ComponentUseClass extends WCMUsePojo
    ComponentUseClass fakeComponent = mock(ComponentUseClass.class);
    when(fakeComponent.getWcmMode()).thenReturn(fakeDisabledMode);

    assertFalse(fakeComponent.getWcmMode().isEdit());

    //do some more not Edit mode testing on fakeComponent.

  }

你试了什么?您是否收到错误?在getWcmMode()处获取空指针。您尝试了什么?您是否收到错误?在getWcmMode()处获取空指针。