在 AEM 中,有一个 Java USE 类,其中存在以下代码 getWcmMode().isEdit()
现在,我正在努力在 Test java 类中使用 mockito 来模拟这个对象。我们有什么办法可以做到吗?
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.
}