gpt4 book ai didi

mongodb - Play-ReactiveMongo 插件 : play2 testing a controller with a reactiveMongoApi

转载 作者:行者123 更新时间:2023-11-28 21:10:29 24 4
gpt4 key购买 nike

在下文中,我使用版本为 0.11.0.play24 ( https://github.com/ReactiveMongo/Play-ReactiveMongo ) 的 Play2 ReactiveMongo 插件适用于 Play 2.4。

如位于 http://reactivemongo.org/releases/0.11/documentation/tutorial/play2.html 的文档中所述,一个带有 Mongo 的 Play2 Controller 实例化如下:

class MyController @Inject() (val reactiveMongoApi: ReactiveMongoApi)
extends Controller with MongoController with ReactiveMongoComponents { }

因此,由于 Controller 现在是类而不是对象,因此无法在测试用例中将其用作单例。

但是,我不知道如何注入(inject) reactiveMongoApi 以便在测试用例(ScalaCheck 或其他...)中使用正确的参数实例化 MyController()

关于如何使用 ScalaCheck 或 Specs2 测试此类 Controller ,您有任何想法/示例吗?

提前致谢!

最佳答案

您可以为 ReactiveMongoApi 生成模拟(取决于您使用的模拟框架):

val reactiveMongoApi = mock[ReactiveMongoApi]

然后你可以这样做:

new MyController(reactiveMongoApi)

这是最简单的方法。要使用实际的 ReactiveMongoApi 对象:

val app = new GuiceApplicationBuilder()
.in(Mode.Test)
.configure("play.modules.enabled" -> "play.modules.reactivemongo.ReactiveMongoModule")
.build

val reactiveMongoApi = app.injector.instanceOf[ReactiveMongoApi]

如果它变得更复杂,例如,部分模拟嵌套依赖树(这是比单元测试更多的集成测试),您可能需要部分模拟 Guice 框架,如解释的那样 here .

关于mongodb - Play-ReactiveMongo 插件 : play2 testing a controller with a reactiveMongoApi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31277433/

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