0

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

我想从我的控制器测试一个方法,如文档中所述

@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.

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

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

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

我被困住了!!如果您想查看所有代码,我将其推送到我的 git repo

提前感谢您的帮助!

4

1 回答 1

0

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

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

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

于 2013-10-14T09:04:55.527 回答