Spring Boot 单元测试 @MockBean 模拟依赖注入
Spring Boot 单元测试 About 1,336 words@MockBean
使用@MockBean
标识注入的Component
是模拟的,不会运行真实的组件逻辑,需要自己给定假设的返回值。
假设返回值
使用given()
指定Service
层调用的方法和参数。
使用willReturn()
指定Service
层调用的方法的返回值。
BDDMockito.given(helloService.sayHello(1))
.willReturn(Response.builder().msg("response msg").build());
示例代码
示例中@MockBean
标注的HelloService
组件,真实对象是一个Mock
出来的实现类,并非自己写的HelloServiceImpl
这种。
配合given()
、willReturn()
、MockMvc
、andExpect()
,进行单元测试。
@WebMvcTest(HiController.class)
class HiControllerTests {
@Autowired
MockMvc mockMvc;
@MockBean
HelloService helloService;
@Test
@DisplayName("测试 GetMapping 接口")
void testGetMappingWithMockMvc() throws Exception {
BDDMockito.given(helloService.sayHello(1))
.willReturn(Response.builder().msg("response msg").build());
mockMvc.perform(MockMvcRequestBuilders.get("/hi")
.header("token", "test-token")
.param("username", "test-username")
)
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.content().string(containsString("msg")))
.andReturn();
}
}
参考
Views: 2,530 · Posted: 2022-10-15
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...