我正在测试一种返回已强制转换对象类型的方法,但是现在我正在获取java.lang.ClassCastException。
我已经用模拟对象和实例对象进行了测试,得到的结果相同。
在实现中,我有Employee类是从User类扩展的。
在EmployeeDelegate类中进行测试的方法:
public Employee getEmployeeByUsername(String username){
User user = userService.getUser(username);
return (Employee) user;
}
单元测试:
@Test
public void testGetEmployeeByUsername() {
User user = new User();
String username = "johnDoe";
Mockito.when(userDelegate.getUser(any(String.class))).thenReturn(user);
Employee response = employeeDelegate.getEmployeeByUsername(username);
}
我也想做
User user = Mockito.mock(User.class)
但仍然不起作用
我希望静态转换能够正常工作。
答案 0 :(得分:1)
FrontOfficeEmployee
是User
,但是User
不一定是FrontOfficeEmployee
。
您的委托人应返回FrontOfficeEmployee
的新实例,而不是新的User
。
答案 1 :(得分:0)
我将其修复为下一件事:
我将方法实现更改如下:
public Employee getEmployeeByUsername(String username){
return (Employee) userService.getUser(username);
}
然后,单元测试用例的工作方式如下:
@Test
public void testGetEmployeeByUsername(){
String username = "daegalle";
Employee user = Mockito.mock(Employee.class);
Mockito.when((Employee) userService.getUser(username)).thenReturn(user);
Employee response = employeeDelegate.getEmployeeByUsername(username);
Assert.assertEquals(user, response);
}