Привет всем, я пытаюсь издеваться над статическим методом из пакета Shiro
org.apache.shiro.mgt.SecurityManager securityManager = EasyMock.createNiceMock(org.apache.shiro.mgt.SecurityManager.class);
SecurityUtils.setSecurityManager(securityManager);
PowerMock.mockStatic(SecurityUtils.class);
EasyMock.expect(SecurityUtils.getSubject()).andReturn(null);
PowerMock.replayAll(SecurityUtils.class);
PowerMock.verify(SecurityUtils.class);
Subject s = SecurityUtils.getSubject(); // this call returns null
s = SecurityUtils.getSubject(); // this call fails with exception below
Таким образом, идея заключается в том, что когда в моем коде у меня есть вызов getSubject, я возвращаю null (я могу изменить это на фактический объект, но пока это будет работать.
Текущая проблема заключается в том, что я получаю исключение
Usage is: expect(a.foo()).andXXX()
at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:42)
at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94)
at $Proxy10.createSubject(Unknown Source)
at org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:846)
at org.apache.shiro.SecurityUtils.getSubject(SecurityUtils.java:56)
at com.mypackage.services.logic.AbstractHibernateTest.abstractBefore(AbstractHibernateTest.java:94)
null
Чтение этого вопроса должно быть методом ответа, но оно не работает. Кто-нибудь видел это раньше, или у кого-нибудь есть предложение, как издеваться над статическим методом в Shiro SecurityUtils?
ура
Это решило мою проблему
SecurityUtils.setSecurityManager(EasyMock.createNiceMock(org.apache.shiro.mgt.SecurityManager.class));
mockSubject = Mockito.mock(Subject.class);
threadState = new SubjectThreadState(mockSubject);
threadState.bind();
.times(2)
в конец ожидания дляgetSubject()