2015-06-19 100 views
2

我写了这个控制器,它从浏览器中完美的作品单元测试播放框架控制器

package controllers 
import play.api._ 
import play.api.mvc._ 

class Application extends Controller { 

    val productMap = Map(1 -> "Keyboard", 2 -> "Mouse", 3 -> "Monitor") 

    def listProductsXML() = Action { 
    Ok(views.xml.products(productMap)) 
    } 
} 

GET  /listProducts.xml    controllers.Application.listProductsXML 

现在我正在写一个单元测试这个控制器的路由被定义

import controllers._ 
import play.api.test.FakeRequest 
import play.api.test.Helpers._ 
import org.specs2.mutable._ 
import play.api.test.WithApplication 

class ControllerTest extends Specification { 
    "controllers.Application" should { 
     "respond with xml for /listproducts.xml requests" in new WithApplication { 
      val result = controllers.Application.listProductsXML()(FakeRequest()) 
      status(result) must equalTo(OK) 
      contentType(result) must beSome("application/xml") 
      contentAsString(result) must contain("products") 
     } 
    } 
} 

当我运行这与activator test-only我得到一个错误

[foo_play] $ test-only ControllerTest 
[error] ProductSpec.scala:10: object Application is not a member of package controllers 
[error] Note: class Application exists, but it has no companion object. 
[error]    val result = controllers.Application.listproductsXML()(FakeRequest()) 
[error]         ^
[error] one error found 
[error] (test:compileIncremental) Compilation failed 
[error] Total time: 1 s, completed Jun 19, 2015 3:48:14 PM 

回答

3

尝试更换:

controllers.Application.listProductsXML()(FakeRequest()) 

与:

new controllers.Application().listProductsXML()(FakeRequest()) 

预播放2.4,以前是对象的控制器。从Play 2.4开始,鼓励他们改为上课。

+1

是......这样做了。 –