1

我正在开发一个游戏!2 生成一些 html/js 小部件的应用程序,这些小部件将嵌入到第三方网站中。它们的链接是动态的,因此我不能拥有静态测试文件。

我如何才能拥有仅在测试模式下工作的测试视图(以及到这些视图的路由),以便我可以使用 Selenium 进行测试。

基本上我想将 testView1.scala.html、testView1.scala.html 添加到 test/views 并有路由到那个,但不希望这些在生产模式下工作。有什么好的方法呢?

4

2 回答 2

3

我不确定这是否是最好的方法,但我会这样做。

  1. 创建测试路由并路由到测试控制器
  2. 在测试控制器中,创建一个包装的动作并让你的所有路由都使用这个动作
  3. 这个包装的动作将测试以查看播放处于什么模式。如果播放不在测试模式下,则转发到 404,否则,运行该动作

当我回到家时,我会添加一些代码来支持,但这是我会使用的一般工作流程。

希望能帮助到你。

于 2012-09-01T17:24:16.740 回答
3

简单...(现在有几年的时间来回答..)。有点类似于@mbseid 的回答:

将您的/conf/routes重命名为/conf/prod.routes ,并在/conf/application.conf中指定它:

play.http.router = prod.Routes

创建一个测试路由文件,例如/conf/test.routes,它公开仅测试路由并将其余路由委托给 prod 路由。

 /test/only/something    controllers.testonly.TestOnlySomethingController.someMethod()  
 -> /                    prod.Routes

确保您的仅测试控制器与其他控制器位于不同的包中。

当您启动测试应用程序时覆盖play.http.router,例如:

 sbt run -Dplay.http.router=test.Routes

它在微服务环境中是一种有用的模式,通过集成测试来公开未公开的数据。

注意,play.http.router在 v2.5+ 之前被称为application.router

于 2017-07-22T00:52:59.180 回答