0

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

现在,我正在努力在 Test java 类中使用 mockito 来模拟这个对象。我们有什么办法可以做到吗?

4

1 回答 1

2

getWcmMode()是 中的 final 方法WCMUsePojo,mockito 默认不支持 mocking final 方法。

您必须通过在类路径中创建一个名为的文件来启用它org.mockito.plugins.MockMaker(将其放在测试资源/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.

  }
于 2017-10-13T07:35:30.067 回答