2015-02-06 60 views
0

我正在使用Play 2.3.7開發應用程序。 我有這個routes文件:未在子路徑文件中編譯的路由

GET   /api-docs        controllers.ApiHelpController.getResources 

GET   /assets/*file       controllers.Assets.at(path="/public", file) 
GET   /swagger-ui/*file      controllers.Assets.at(path="/public/swagger-ui", file) 

->   /v1/episodes       model_v1_episodes.Routes 
->   /v1/seasons       model_v1_seasons.Routes 
->   /v1/series        model_v1_series.Routes 

我也有model_v1_*文件爲每個模型,以避免過長的路線文件。這裏是其中的一個

GET  /      controllers.EpisodeController.list() 
GET  /:key      controllers.EpisodeController.load(key: String) 
POST /      controllers.EpisodeController.create() 
DELETE /:key      controllers.EpisodeController.delete(key: String) 

的問題是,當我想測試EpisodeController.list()我不能因爲EpisodeController不存在...

@Test 
public void list() { 
    Result result = callAction(controllers.routes.ref.EpisodeController.list(), new FakeRequest()); 
    // Assertions on result... 
} 

如果我在target/scala-2.10/src_managed/main/controllers/routes.java手動檢查,有沒有跟蹤EpisodeController,而它出現在controllers包中。一切正常,當我run我的應用程序和Swagger測試。

+0

嘗試將子路徑中引用的控制器放置在各自獨立的程序包中。否則,路由編譯器將覆蓋生成的主路由。 https://github.com/playframework/playframework/issues/1036 – Mikesname 2015-02-10 12:39:15

回答

0

正如@Mikesname在對該問題的評論中所述,問題在於我的控制器在controllers包。 我把它們放入controllers.mypackage並命名我的文件mypackage.routes,一切正常。

0
1 activator clean compile 
2 activator eclipse 

,如果它不能幫助在調試模式下運行測試:

  • 激活-jvm調試測試,並檢查出了什麼問題?

也許日誌會告訴你更多內容(來自cmd和應用程序)

+0

調試模式沒有任何反常現象。請注意,如果我直接在'routes'中複製'model_v1_episodes.routes'的路由並刪除'model_v1_episodes.routes',它可以正常工作...... – c4k 2015-02-07 17:16:04