2016-11-05 2 views
1

Я пытаюсь выполнить функциональный тест для контроллера с версией 2.5.9 игры.Как протестировать контроллер в Play Framework с функциональным тестом

У меня есть контроллер с именем HomeController

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

мой взгляд выглядит следующим образом

@(message: String) 

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

аргументы в @main это то, что идет в заголовке страницы и мой тест выглядит следующим образом

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

Я нашел проблему после перехода к исходному коду как scala test plus, так и playframework.

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

должен быть

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

implicit lazy val port указан в OneServerPerSuite признака и получает значение по умолчанию из пакета play.api.test.Helpers, который по умолчанию порт 19001. Если я действительно нуждался в порт для 9000 я мог бы также переопределить порт, используя

implicit override lazy val port = 9000 
Смежные вопросы