我正在使用Spring开发API,这是我的首次集成测试。
假设我的API有一个User
类,每个CRUD端点都有一个服务,一个控制器带有一个存储库来管理所有这些。
我应该为每个端点一个集成测试创建有关其控制器,服务和存储库的信息吗?如果是这样,这与对单个控制器进行单元测试有什么不同?例如,这是我的RestCreateUserTest.class
:
@RunWith(SpringRunner.class)
@WebMvcTest(UserCreateRest.class)
public class RestCreateUserTest {
@Autowired
private MockMvc mvc;
@MockBean
private UserCreateService service;
@Test
public void createUser_whenPostUser() throws Exception {
User user = new User();
user.setName("Test Name");
given(service.create(Mockito.any())).willReturn(user);
mvc.perform(post("/users")
.contentType(MediaType.APPLICATION_JSON)
.content(JsonUtil.toJson(user)))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.name", is(user.getName())));
}
}
如您所见,我正在连接我的存储库,服务和控制器以测试单个端点。 如果有人可以在此处提供一些指导,将不胜感激。