【问题标题】:Play! Framework 2.20 - Issue with reverse router "ref" and functional testing玩!框架 2.20 - 反向路由器“ref”和功能测试问题
【发布时间】:2013-10-12 07:57:41
【问题描述】:

我在 Play 中的反向路由器有问题! 2.2.0

我想从我的控制器测试一个方法,如the documentation 中所述,如下所示:

@Test
public void testIsSessionSpeaker_true() throws Exception {
    // the action
    Result result = callAction( controllers.routes.ref.UsersController.isSessionSpeaker(workshop.workshopSession.get(0)),
                                fakeRequest().withSession("uuid", "123456"));
    // test after action
}    

当我运行测试时,出现以下错误:

error: cannot find symbol
Result result = callAction(controllers.routes.ref.UsersController.isSessionSpeaker(workshop.workshopSession.get(0)),
^
symbol: method isSessionSpeaker(WorkshopSession)
location: variable UsersController of type ReverseUsersController
1 error

我想测试的方法isSessionSpeaker不能通过路由访问,所以我不能使用route(fakeRequest(PUT, "something"))并且该方法需要一个会话,所以我不能像UsersController.isSessionSpeaker(...)那样“调用它”或者我得到一个There is no HTTP Context available from here.

问题不在于我的 intellij,因为我使用激活器编译和执行测试。

在阅读了一半的网页后,我尝试了一些其他方式将 ref 写为:

controllers.WorkshopManager.routes.ref.UsersController.isSessionSpeaker(...)
controllers.WorkshopManager.routes.UsersController.isSessionSpeaker(...)
controllers.routes.UsersController.isSessionSpeaker(...)
routes.ref.UsersController.isSessionSpeaker(...)

我卡住了!! 如果你想查看所有代码,我将它推送到我的 git repo here

提前感谢您的帮助!

【问题讨论】:

    标签: java playframework playframework-2.0


    【解决方案1】:

    我得到了答案的一部分,Issue #969 隐藏了真正的问题(感谢 Eclipse 向我展示它!)。

    反向路由器(顾名思义......)允许访问具有路由的方法。由于isSessionSpeaker(...) 是我的控制器的一种方法,它不是我的路由器的一部分,所以我不能使用callAction 来测试我的方法。

    现在我只需要找到一种方法来测试我的控制器中的方法,当您需要会话时,该方法不属于我的路由器,但这是另一个问题...

    【讨论】:

    • 如果有人读到这篇文章,我发现在这种情况下伪造会话的最简单的解决方案是:public void fakeSession() { Http.Context.current.set(new Http.Context( 1l, mock(RequestHeader.class), mock(Http.Request.class), new HashMap<String, String>(), new HashMap <String, String>(), new HashMap <String, Object>())); Http.Context.current().session().put("uuid", UUID); }post 的帮助下,它使用 mokito,它工作得很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2018-04-08
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多