【问题标题】:How to do integration test on MongoDB Connection in play framework using Java如何使用 Java 在 Play 框架中对 MongoDB Connection 进行集成测试
【发布时间】:2015-01-13 04:25:56
【问题描述】:

我想对我的项目进行集成测试,以测试模式将一些数据存储到 MongoDB 中。我正在使用 org.Mongo 。

我在 /test 文件夹中有一些测试单元类。但是,当我从 eclipse 运行单元类时,从 Mongo DB 中根本找不到数据,也无法从中获取任何集合实例。

下面是测试代码:

@Test
public void test(){
    running(testServer(3333, fakeApplication(conf.asMap())), HTMLUNIT, new Callback<TestBrowser>() {
            public void invoke(TestBrowser browser) {
                String body = "\"name:\": \"abc\"";
                MongoStore.store(body);
            }
    });
}

Conf 是不同于 application.conf 的配置文件,我使用它来提供暂存配置。 MongoStore 只是一个在 mongoDB 中存储数据的包装器。

我永远无法将日期存储到 Mongo 中(我很确定 mongo 连接的其余部分很好用),我也无法获得 DBCollection 的实例。

有谁知道在测试单元中运行时如何将 play 连接到 mongo db?

【问题讨论】:

    标签: mongodb unit-testing testing playframework playframework-2.0


    【解决方案1】:

    我终于明白了。

    在原代码中,我写了一个插件来连接mongoDB。似乎在测试模式下,播放不会自动加载该插件。所以我需要将它作为附加插件添加为 fakeApplication() 的参数。

    之后一切正常。

    灵感来自 stackoverflow 中提到插件在测试模式下不会自动启用的问题,忘记链接的想法(真可惜!)

    其他链接: 插件名称应与 conf/play.plugins 中的名称相同 How to load different plugins in Play framework unit tests?

    Play 2.0 FakeApplication setup with test configuration

    【讨论】:

      【解决方案2】:

      这个答案现在可能为时已晚且无关紧要,但我添加以防万一有人发现它有用。我编写了一个使用 mongodb here 的集成/单元测试播放应用程序的自以为是的方法。该存储库使用 reactivemongo 作为驱动程序,并使用 scalatest 作为测试框架。

      【讨论】:

        猜你喜欢
        • 2013-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-03
        • 1970-01-01
        • 2013-09-21
        • 1970-01-01
        相关资源
        最近更新 更多