播放时我的反向路由器出现问题! 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
提前帮助你!
答案 0 :(得分:0)
我得到了答案的一部分,Issue #969隐藏了我真正的问题(因为Eclipse向我展示了它!)。
反向路由器(顾名思义......)允许访问具有路由的方法。由于isSessionSpeaker(...)
是我的控制器的一种方法,它不属于我的路由器,我无法使用callAction
来测试我的方法。
现在我只需找到一种方法来测试我的控制器中的方法,当你需要一个会话时,该方法不是我的路由器的一部分,但这是另一个问题......