首页 > 解决方案 > org.mockito.exceptions.misusing.UnfinishedStubbingException' 异常。无法评估 mypackage.MockedService$MockitoMock$980936084.toString()

问题描述

我正在为 Spring Boot 应用程序进行 MVC 测试。

Mockito 抛出了一个奇怪的异常。

我的代码

@ExtendWith(SpringExtension.class)
@WebMvcTest(controllers = MyController.class, secure = false)
class ControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private ObjectMapper objectMapper;

    @MockBean
    private MockedService mockedService;

    @Test
    void post() {

        Dto dto = createDto();

// this code throws the exception
        when(mockedService.save(ArgumentMatchers.argThat(new MyArgumentMatcher())))
                .thenReturn(dto);


        mockMvc.perform(post("/api").content(
                asJsonString(preparePost())
        )
                .contentType(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk());

    }

private static class MyArgumentMatcher implements ArgumentMatcher<Dto> {

        @Override
        public boolean matches(Dto dto) {
            return dto.getField1().equals(FIELD1_VALUE) &&
                    dto.getField2().equals(FIELD2_VALUE) &&
                    dto.getField3().equals(FIELD3_VALUE) &&
                    dto.isField4() == FIELD4;
                
        }
    }
//...

我从未见过 Mockito 的这种行为。添加自定义toString()从来都不是 Mockito 的要求,即使我这样做了 - 没有任何改变。

这里有什么问题?我不知道。

标签: javaunit-testingmockitospring-boot-test

解决方案


推荐阅读