对于playframework,仅在测试模式下运行一些控制器

ses*_*ses 4 playframework

是否可以仅在测试模式下运行某些控制器路由

我需要在链接点击时模拟一些响应.我会创建控制器和路径,只有在我运行游戏测试时才可用.

可能吗?

Cod*_*nci 6

正如Mike指出的那样,我博客的代码确实向您展示了如何配置路由文件,以便只有某些路由可用于Dev或Prod模式.所以...

%{ if (play.mode.isDev()) { }%
GET     /route4                                 Application.noProd
GET     /route5                                 Application.noProd
GET     /route6                                 Application.noProd
%{ } }%
Run Code Online (Sandbox Code Playgroud)

但是,这确实会阻止这些路由在Prod模式下工作,但它们不会排除控制器被访问.这样做的原因是,您很可能在路径文件的底部有以下内容

*       /{controller}/{action}                  {controller}.{action}
Run Code Online (Sandbox Code Playgroud)

这意味着我可以Application.noProd使用catch all route 访问该操作,该路径将是以下URL

/application/noprod
Run Code Online (Sandbox Code Playgroud)

所以.如果要隐藏路线和控制器,可以选择几种方法.

  1. 您可以删除catch-all路由,这样除了您设置的特定路由之外没有其他条目.这意味着您需要为路径文件中的所有操作指定所有路由.

  2. 其次,您可以检查play.mode.isDev()您的操作,并致电badRequest()以防止访问.这将使这更加明显,但可能是编码中不可接受的开销.