无法使用PowerMock模拟构造函数
在下面的代码中,我无法使用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();
}
}
请建议我上。
只要你想嘲笑这一行
APSPPortletRequest wrappedRequest = new APSPPortletRequest(request);
这个对象创建调用只需要一个参数,但在嘲笑你的测试方法,则需要传递两个值expectNew
方法。
其实你应该这样做,你是在告诉编译器做
PowerMock.expectNew(APSPPortletRequest.class, EasyMock.anyObject(requestClass.class)).andReturn(apspPortletRequestMock).anyTimes();
返回一个嘲笑实例apspPortletRequestMock只要“新”运算符称为阶级APSPPortletRequest与请求类的任何对象作为参数。
而且您还错过了一小部分,您需要重播所有的Easymock对象..即EasyMock.replay(...);
也需要存在。
希望这有助于!
祝你好运!
如果你想嘲笑以下方法:
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);
我这样做与上述步骤,并正常工作。
您能否提供错误或某些提示,指出确切问题是什么 – Pratik