首页 > 解决方案 > org.mockito.exceptions.misusing.WrongTypeOfReturnValue: ArrayList 不能由 getDetails() 返回

问题描述

这是代码

public class TodoBusinessImpl {
        BusinessManager businessManager;

        public TodoBusinessImpl(BusinessManager businessManager) {
            this.businessManager = businessManager;
        }

        public List<String> retrieveTodosRelatedToSpring(String user) {
            List<String> filteredTodos = new ArrayList<String>();
            Map<String, String> test = businessManager.getDetails();
            return filteredTodos;
        }
    }

那有什么问题?我做错了什么

public class MockitoTest {  
    private BusinessManager businessManager;    
    @Before
    public void setUp() {
        businessManager = Mockito.mock(BusinessManager.class);
    }   
    @Test
    public void retrieveTodosRelatedToSpringTest() {
        TodoBusinessImpl todoBusinessImpl = new TodoBusinessImpl(businessManager);
        Mockito.when(todoBusinessImpl.retrieveTodosRelatedToSpring("test"))
    .thenReturn(Arrays.asList("test"));
    }
}

这是测试课。获取 org.mockito.exceptions.misusing.WrongTypeOfReturnValue: ArrayList 无法由 getDetails() 返回的异常

标签: javamockitojunit4

解决方案


您必须调用您正在测试的方法,而不是模拟它的行为“不告诉它在被调用时要做什么”。代替:

Mockito.when(todoBusinessImpl.retrieveTodosRelatedToSpring("test")).thenReturn(Arrays.asList("test"));

你应该做这个:

 List<String> list = todoBusinessImpl.retrieveTodosRelatedToSpring("test");
 // print list or assert it's content to make sure you're getting the right response

推荐阅读