Spring boot spring引导控制器测试返回null
我正在测试控件的“find”方法,该方法返回一个“findById”,但返回值总是空的 我的项目结构如下: 我有一个法人实体 扩展JPA存储库的存储库 以及“使用”存储库的服务Spring boot spring引导控制器测试返回null,spring-boot,mockito,junit5,Spring Boot,Mockito,Junit5,我正在测试控件的“find”方法,该方法返回一个“findById”,但返回值总是空的 我的项目结构如下: 我有一个法人实体 扩展JPA存储库的存储库 以及“使用”存储库的服务 @SpringBootTest @AutoConfigureMockMvc @ExtendWith(SpringExtension.class) class LegalPersonResourceTest { @MockBean private LegalPersonService service;
@SpringBootTest
@AutoConfigureMockMvc
@ExtendWith(SpringExtension.class)
class LegalPersonResourceTest {
@MockBean
private LegalPersonService service;
@Autowired
private MockMvc mvc;
@Test
void find() {
var localDate = LocalDate.of(1955, 10, 25);
List<Long> subsidiaries = new ArrayList<>() {{
add(10L);
add(20L);
}};
List<Long> phones = new ArrayList<>() {{
add(50L);
add(60L);
}};
var mockLP = LegalPerson.builder()
.id(1L)
.active(true)
.companyId(1L)
.tradeName("Test Company Trade Name")
.companyName("Test Company Company Name")
.email("test@com")
.cnpj("testCNPJ")
.stateRegistration("test state Registration")
.municipalRegistration("test Municipal Resgistration")
.openingDate(localDate)
.address(1L)
.companyType(CompanyEnum.HEADOFFICE)
.subsidiaries(subsidiaries)
.phones(phones)
.build();
Mockito.doReturn(mockLP).when(service).find(1L);
}
}
它工作得很好。
但如果我加上
.andExpect(MockMvcResultMatchers.header().string(HttpHeaders.ETAG, "\"1\""))
返回null。尝试使用
参数匹配器
Mockito.when(this.service.find(ArgumentMatchers.eq(1L)).thenReturn(mockLP);
尝试使用
ArgumentMatchers
Mockito.when(this.service.find(ArgumentMatchers.eq(1L)).thenReturn(mockLP);
您只是在模拟服务,但没有测试此代码中的任何内容,您可能需要测试控制器,如下所示:
import static org.mockito.BDDMockito.given;
@Test
public void shouldGetAPerson() throws Exception {
//...
given(service.find(1L)).willReturn(mockLP);
mvc.perform(MockMvcRequestBuilders.get("/person/1")
.contentType("application/json"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id", Matchers.containsString("1")));
}
您只是在模拟服务,但没有测试此代码中的任何内容,您可能需要测试控制器,如下所示:
import static org.mockito.BDDMockito.given;
@Test
public void shouldGetAPerson() throws Exception {
//...
given(service.find(1L)).willReturn(mockLP);
mvc.perform(MockMvcRequestBuilders.get("/person/1")
.contentType("application/json"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id", Matchers.containsString("1")));
}
你没有在测试任何东西。至少在这里发布的代码中没有。您只是在进行测试设置,没有进行任何测试。至少在这里发布的代码中没有。您只是在进行测试设置。