2015-04-23 186 views
1

在下面的代码中,我无法使用PowerMock模拟构造函数。 我想要MOK以下语句。无法使用PowerMock模拟构造函数

APSPPortletRequest wrappedRequest = new APSPPortletRequest(request); 
下面

是我的嘲讽步骤

@PrepareForTest({APSPPortletRequest.class}) 
@RunWith(PowerMockRunner.class) 
public class ReminderPortletControllerTest { 

    private PortletRequest requestMock; 
    private APSPPortletRequest apspPortletRequestMock; 

    public void setUp() throws Exception { 
     requestMock = EasyMock.createNiceMock(PortletRequest.class); 
     apspPortletRequestMock = EasyMock.createNiceMock(APSPPortletRequest.class); 
    } 

    @Test 
    public void testExecuteMethod() throws Exception { 

     PowerMock.expectNew(APSPPortletRequest.class, requestMock).andReturn(apspPortletRequestMock).anyTimes(); 

     EasyMock.replay(apspPortletRequestMock, requestMock); 
     PowerMock.replayAll(); 
    } 
} 

请建议我上。

+0

您能否提供错误或某些提示,指出确切问题是什么 – Pratik

回答

1

只要你想嘲笑这一行

APSPPortletRequest wrappedRequest = new APSPPortletRequest(request); 

这个对象创建调用只需要一个参数,但在嘲笑你的测试方法,则需要传递两个值expectNew方法。

其实你应该这样做,你是在告诉编译器做

PowerMock.expectNew(APSPPortletRequest.class, EasyMock.anyObject(requestClass.class)).andReturn(apspPortletRequestMock).anyTimes(); 

返回一个嘲笑实例apspPortletRequestMock只要“新”运算符称为阶级APSPPortletRequest与请求类的任何对象作为参数。

而且您还错过了一小部分,您需要重播所有的Easymock对象..即EasyMock.replay(...);也需要存在。

希望这有助于!

祝你好运!

0

如果你想嘲笑以下方法:

EncryptionHelper encryptionhelper =新EncryptionHelper( “CEP”,真正的);

你可以用powerMock这样做。

1.导入类。

import static org.powermock.api.support.membermodification.MemberMatcher.method;

import static org.powermock.api.support.membermodification.MemberModifier.stub;

2.添加注释@RunWith和@PrepareForTest在你上面junit测试calss。

@RunWith(PowerMockRunner.class)

@PrepareForTest({EncryptionHelper.class})

3.Mock它。

EncryptionHelper encryptionHelperMock = PowerMock.createMock(EncryptionHelper.class); PowerMock.expectNew(EncryptionHelper.class,isA(String.class),EasyMock.anyBoolean())andReturn(encryptionHelperMock);

4。回复它

PowerMock.replayAll(encryptionHelperMock);

我这样做与上述步骤,并正常工作。