我正在测试返回“ findById”的控制器的“ find”方法,但返回始终为空。
我的项目的结构如下:
我有一个LegalPerson实体 扩展JpaRepository
的存储库还有一个“使用”存储库的服务。
0
我想知道我忘记了什么,或者写错了。
编辑01:
3
它完美地工作。 但是如果我添加
@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);
}
}
返回空值。
答案 0 :(得分:1)
尝试使用ArgumentMatchers
Mockito.when(this.service.find(ArgumentMatchers.eq(1L)).thenReturn(mockLP);
答案 1 :(得分: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")));
}