0
我正在使用easymock和powermock编写下面的Class B的isRegisteredUSer()的单元测试用例。如何模拟类A的getUserInformation()并返回一个模拟的UserAccessBean?如何使用powermock-easymock来模拟正在测试的方法中的另一个类方法调用?
class A{
private int userId;
A(int userId){
this.userId = userId;
}
public UserAccessBean getUserInformation(){
UserAccessBean userAB = new USerAccessBean().findByUserId(userId);
return userAB;
}
}
Class B{
public static boolean isRegisteredUSer(int userId){
A a = new A(userId);
UserAccessBean userAB = a.getUserInformation();
if(userAB.getUserType().equals("R")){
return true;
}
return false;
}
JUnit
public class BTest extends EasyMockSupport{
UserAccessBean userAB = null;
A a = null;
int userId = 12345;
@Before
public void setUp() throws Exception {
userAB = new UserAccessBean();
}
@Test
public void when_UserDesctiptionIsR_Expect_True_FromIsRegisteredUser() throws Exception{
//data setup
userAB.setDescription("R");
A a = new A(12345);
EasyMock.expect(a.isRegisteredUser()).andReturn(userAB);
PowerMock.replayAll();
Boolean flag = B.isRegisteredUser(userId);
assertEquals(flag, true);
PowerMock.verifyAll();
}
}
即使我使用EasyMock.expect()嘲笑getUserInformation()方法调用,我的控制台内getUserInformation会()当我运行我的JUnit。
有人可以帮我嘲笑正在测试的方法(Class B的isRegisteredUSer)的另一个类函数方法(Class A的getUserInformation)调用吗?
Powermock提供了一个“mockNew”,但您应该重构代码以简化测试,请参阅https://github.com/powermock/powermock/wiki/mockconstructor – 2017-08-25 18:50:55