如何使用 Mockito 和 JUnit 测试静态类转换



我正在测试一个返回对象类型转换的方法,但现在我得到了一个java.lang.ClassCastException。

我已经用模拟对象和实例对象进行了测试,得到了相同的结果。

在实现中,我有员工类从用户类扩展。

在课堂上测试的方法 员工代表:

    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)

但仍然不起作用

我希望静态强制转换工作正常。

FrontOfficeEmployeeUser,但User不一定是FrontOfficeEmployee

委托应返回FrontOfficeEmployee的新实例,而不是新User

我修复它做下一件事:

我更改方法实现如下:

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);
}

最新更新