如何将MockMvc与模拟存储库一起使用?

时间:2016-01-13 06:25:52

标签: java spring spring-boot mockmvc spring-restdocs

Conext

  • 我发现了这个问题here,但问题不同了。

  • 因此我们正在使用Katharsis ControllerSpring Data Rest

  • 我们只有1个控制器用于整个应用程序,然后请求将被发送到Spring Data Rest存储库类。

  • 我们希望使用Spring Restdoc生成文档,要求我们使用MockMvc编写单元测试。

  • 但是当使用Mockmvc时,它会启动容器并需要设置数据源。

  • 如果我们使用standaloneSetup()并传递模拟的存储库类,则MockMvc将无法加载Katharsis Controller,因此请求将无法访问该存储库。

  • 我知道我们可以创建一个内存数据库,但是我们的项目很大,数据库需要创建大量的表,我们要避免这些表,因为这些测试是出于文档目的。

问题

有没有办法实现这一点,只模拟目标存储库类?

注意

按存储库,我的意思是CrudRepository中的Spring DataRest接口。

1 个答案:

答案 0 :(得分:1)

  1. 正如Andy Wilkinson建议的那样,你可以考虑创建单元测试,你可以自己将bean连接在一起并使用MokMvc独立设置。

  2. 如果你想创建集成测试并创建Spring Context,可以使用@Primary@ActiveProfiles@Profile注释来伪造Spring bean。 I wrote a blog post with GitHub example how to do it。您只需将此方法与基于WebApplicationContext的{​​{1}}设置相结合即可。它没有问题,我过去写了这样的测试。