首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试Spring数据Rest

测试Spring数据Rest
EN

Stack Overflow用户
提问于 2019-02-27 22:25:52
回答 1查看 347关注 0票数 0

我想测试一个Spring boot 2 respository作为rest控制器应用程序。App在浏览器( http://localhost:8080/api/v1/ehdata )上工作得很好,但我找不到一个示例,我如何在Spring测试环境中测试它。非常重要的是,没有RestControllers和服务,只有这样注释的存储库:

代码语言:javascript
复制
@RepositoryRestResource(path = EhDataRepository.BASE_PATH, 
                        collectionResourceRel = EhDataRepository.BASE_PATH)
public interface EhDataRepository extends 
PagingAndSortingRepository<EhData, Long> {

    public static final String BASE_PATH="ehdata";
}

我尝试了此测试,但响应为空,状态代码为404:

代码语言:javascript
复制
@RunWith(SpringRunner.class)
@SpringBootTest
@WebMvcTest(EhDataRepository.class)
public class RestTest extends AbstractRestTest {
    @Autowired MockMvc mvc;

    @Test
    public void testData() throws Exception {
         mvc.perform(get("/api/v1/ehdata")
            .accept(MediaTypes.HAL_JSON_VALUE))
            .andDo(print())
            .andExpect(status().isOk())
            .andExpect(header().string(HttpHeaders.CONTENT_TYPE, 
                     MediaTypes.HAL_JSON_VALUE+";charset=UTF-8")
            .andReturn();
    }

}

thx,Zamek

EN

回答 1

Stack Overflow用户

发布于 2019-03-20 18:33:27

您将需要根据您尝试测试的方法来模拟存储库的输出,如下所示:

代码语言:javascript
复制
 @MockBean
 private ProductRepo repo;

然后

代码语言:javascript
复制
Mockito.when(this.repo.findById("PR-123")
    .get())
    .thenReturn(this.product);
this.mvc.perform(MockMvcRequestBuilders.get("/products/{id}", "PR-123")
    .contentType(MediaType.APPLICATION_JSON_VALUE))
    .andReturn();

此外,在perform()方法中调用API时,请删除server-context-path。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54907668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档