gpt4 book ai didi

spring-boot - @Autowire MockMvc - Spring 数据休息

转载 作者:行者123 更新时间:2023-12-01 10:24:40 24 4
gpt4 key购买 nike

给定存储库

public interface ResourceRepository extends CrudRepository<Resource, Long> { ... }

以下测试代码:

@WebMvcTest
@RunWith(SpringRunner.class)
public class RestResourceTests {

@Autowired
private MockMvc mockMvc;

@Test
public void create_ValidResource_Should201() {
String requestJson = "...";

mockMvc.perform(
post("/resource")
.content(requestJson)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isCreated()); // This fails with 404
}

}

为了解决这个问题,我需要注入(inject) WebApplicationContext并手动创建 MockMvc对象如下:

@SpringBootTest
@RunWith(SpringRunner.class)
public class RestResourceTests {

private MockMvc mockMvc;

@Autowired
private WebApplicationContext webApplicationContext;

@Before
public void setup() {
this.mockMvc = webAppContextSetup(webApplicationContext).build();
}

有没有更简单的方法来实现这一点?

谢谢!

最佳答案

我想出了一个“干净”的解决方案,但对我来说感觉就像一个错误。

@SpringBootTest
@RunWith(SpringRunner.class)
@AutoConfigureMockMvc // <-- this is the fix
public class RestResourceTests {

@Autowired
private MockMvc mockMvc; // <-- now injects with repositories wired.

我觉得这是一个错误的原因, @WebMvcTest注释已放置 @AutoConfigureMockMvc被测类的注释。

感觉就像 @WebMvcTest没有查看加载了 @RestRepository 的 Web 组件.

关于spring-boot - @Autowire MockMvc - Spring 数据休息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48589893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com