如何在Play Framework 2.x [Java]中模拟控制器/休息端点以进行单元测试

Ogu*_*glu 14 java junit unit-testing mocking playframework-2.0

我们正在Play Framework 2.x上开发一个带Java的项目,并有一些休息端点.我们还有一些测试用例,如下所示:

    @Test
    public void testLogout() throws Exception {
        FakeRequest request = new FakeRequest("GET", "/product/api/v1/logout");

        Result result = route(request);

        assertThat(status(result)).isEqualTo(OK);
        assertThat(contentType(result)).isEqualTo("application/json");
        assertThat(contentAsString(result)).contains("result");
    }
Run Code Online (Sandbox Code Playgroud)

另一方面,我们有一些方法[like register()]无法在生产数据库中测试.

测试影响prod数据库的方法的正确方法是什么?我觉得嘲笑,但我不确定,我不知道该怎么做.如果嘲笑是一个不错的选择,有没有任何有效的例子?

请给我一些关于这个问题的建议.

hia*_*mex 2

我认为正确的方法不是针对生产数据库进行测试。

我将测试分为两组:单元测试和集成测试。单元测试是众所周知的,在集成测试中,我测试应用程序本身之外的所有内容(例如数据库)以及它们之间的连接。

我在需要时使用内存数据库中的模拟运行单元测试,并针对结构与生产数据库相同但不同的数据库进行集成测试。

我希望我的方法对你有帮助。