玩!框架2.20 - 反向路由器“ref”和功能测试的问题

时间:2013-10-12 07:57:42

标签: java playframework playframework-2.0

播放时我的反向路由器出现问题! 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

提前帮助你!

1 个答案:

答案 0 :(得分:0)

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

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

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