2016-01-13 51 views
1

Conext如何在模拟库中使用MockMvc?

  • 我发现这个问题here但我的问题是不同的。

  • 所以我们使用Katharsis ControllerSpring Data Rest

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

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

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

  • 如果我们使用standaloneSetup()并通过嘲笑库类,然后MockMvc将不会加载Katharsis Controller,因此,请求不会达到该资源库。

  • 我明白我们可以创建一个内存数据库,但是我们的项目很大,数据库需要大量的表来创建,我们希望避免这种情况,因为这些测试是为了文档目的。

问题

有什么办法来实现这一点,只是嘲笑目标库类?

注意

通过库我的意思是Spring DataRestCrudRepository接口。

+0

我对你的应用程序的描述有点困惑。您的KatharsisContoller处理每个请求并调用各种Spring Data存储库,还是您还使用由Spring Data REST自动生成的一些控制器?如果是后者,嘲笑那些自动生成的控制器对我来说不是一个好主意,因为它可能导致您的文档与实际服务不同步。 –

+0

@AndyWilkinson没有前者是如此。所以KatharsisController决定调用什么所谓的json版本库,并且每个json版本库都调用相关的S Data repository。所以S.Data存储库到最后,我们不需要测试它们,但我们想要模拟这些存储库。 – xbmono

+1

听起来好像需要使用'standaloneSetup'并传入已经使用模拟存储库创建的'KatharsisController'实例。 –

回答

1
  1. 安迪·威尔金森建议,可以考虑创建单元测试,你豆丝一起用自己和使用MokMvc独立设置。

  2. 如果你想创建集成测试,反正创建Spring上下文,有办法伪造的Spring bean使用@Primary@ActiveProfiles@Profile注解。 I wrote a blog post with GitHub example how to do it。您只需要将此方法与基于MockMvc设置的WebApplicationContext结合使用。它没有问题,我过去写了这样的测试。

相关问题