[英]Mocking Shiro's static method in SecurityUtils with PowerMock
大家好,我想從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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.