是@Mock
和@Autowired
。
@Mock
是Mockito框架中的注解,用于创建一个模拟对象。在使用Mockito进行单元测试时,我们可以使用@Mock
注解来创建一个模拟对象,以模拟被测试对象的依赖对象的行为。
@Autowired
是Spring框架中的注解,用于自动装配依赖对象。在使用MockMvc进行集成测试时,我们可以使用@Autowired
注解来自动装配MockMvc对象,以便进行请求的模拟和验证。
下面是一个示例代码,演示了如何使用Mockito和MockMvc进行单元测试和集成测试:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(MockitoExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Mock
private UserService userService;
@Test
public void testGetUser() throws Exception {
User user = new User("John", "Doe");
Mockito.when(userService.getUser(1L)).thenReturn(user);
mockMvc.perform(get("/users/1"))
.andExpect(status().isOk());
}
}
在上面的示例中,我们使用了@Mock
注解创建了一个模拟的UserService
对象,并使用@Autowired
注解自动装配了MockMvc对象。然后,在testGetUser
方法中,使用Mockito的when
方法来定义当调用userService.getUser(1L)
时返回一个预设的用户对象。最后,使用MockMvc的perform
方法来模拟发送GET请求,并使用andExpect
方法来验证返回的状态码是否为200。
这样,我们就可以使用Mockito和MockMvc进行单元测试和集成测试,并且可以通过Mockito来模拟依赖对象的行为,以便更好地测试我们的代码。
领取专属 10元无门槛券
手把手带您无忧上云