2016-11-05 5 views
1

재생 프레임 워크 버전 2.5.9가있는 컨트롤러에 대한 기능 테스트를 수행하려고합니다.기능 테스트를 사용하여 Play Framework에서 컨트롤러를 테스트하는 방법

나는

@Singleton 
class HomeController @Inject()(implicit exec: ExecutionContext) extends Controller { 
    def index = Action.async { 
     Future{ 
      Ok(views.html.index("Home")) 
     } 
    } 
} 

내보기 @main이

@(message: String) 

@main("Home") { 
    <h2>Welcome</h2> 
} 

인수처럼 보이는 HomeController라는 컨트롤러를 페이지 의 제목에서 어떤 일이 일어나는지되어 있고 내 테스트는 다음과 같습니다

class ApplicationTwoSpec extends PlaySpec with OneServerPerSuite with OneBrowserPerSuite with HtmlUnitFactory{ 

    implicit val ec = Implicits.global 

    val homeController = new HomeController() 

    implicit override lazy val app = 
    new GuiceApplicationBuilder() 
     .router(Router.from{ 
     case GET(p"/") => homeController.index 
     }) 
     .build() 


    "The sample Controler with a server" must { 

    "have home in the title" in { 
     go to s"http://localhost:9000/" 
     pageTitle mustBe "Home" 
    } 
    } 

} 

테스트를 실행할 때 다시

must return and ok response back *** FAILED *** 
"[]" was not equal to "[Home]" (ApplicationTwoSpec.scala:37) 

적절한 응답을 얻으려면 무엇을해야합니까?

답변

0

스칼라 테스트 플러스와 playframework의 소스 코드를 모두 살펴본 후 문제가 발견되었습니다.

go to s"http://localhost:$port/" 

implicit lazy val portOneServerPerSuite 특성에 지정된 내가 정말 포트를 필요한 경우 포트 19001.에시 기본값 play.api.test.Helpers 패키지에서 기본 값을 가져옵니다되어 있어야한다

go to s"http://localhost:9000/" 

9000이되도록 포트를 쓸 수도 있습니다.

implicit override lazy val port = 9000