Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 测试重定向后加载的页面_Scala_Playframework_Specs2 - Fatal编程技术网

Scala 测试重定向后加载的页面

Scala 测试重定向后加载的页面,scala,playframework,specs2,Scala,Playframework,Specs2,我有一个测试用例,用来验证在POST调用之后,用户是否被重定向到正确的页面 "Redirect Page" in { running(FakeApplication()) { val Some(result) = route(FakeRequest(POST, "/product/add/something") .withFormUrlEncodedBody( "Id" -> "666", ) .withSession("ema

我有一个测试用例,用来验证在POST调用之后,用户是否被重定向到正确的页面

"Redirect Page" in {
  running(FakeApplication()) {
    val Some(result) = route(FakeRequest(POST, "/product/add/something")
      .withFormUrlEncodedBody(
       "Id" -> "666",
      )
      .withSession("email" -> "User")
    )
    status(result) must equalTo(SEE_OTHER)
    // contentAsString(result) at this point is just blank

这将验证是否给定了重定向URL。然后如何让单元测试转到重定向的URL,以便验证其内容?

您可以使用以下方法测试重定向到的URL:

    redirectLocation(result) must beSome.which(_ == "/product/666")
如果要检查内容,请执行重定向:

    val nextUrl = redirectLocation(result) match {
      case Some(s: String) => s
      case _ => ""
    }
    nextUrl must contain("/product/666")

    val newResult = route(FakeRequest(GET, nextUrl)).get

    status(newResult) must equalTo(OK)
    contentType(newResult) must beSome.which(_ == "text/html")
    contentAsString(newResult) must contain("something")

为什么不创建另一个测试来精确地测试新页面,因为重定向到这个页面做得很好:{…}中的“test redirected page”我正在测试新页面,但我不确定如何做,重定向指向正确的新页面。到目前为止,我只验证了它是重定向的,而不是重定向到什么地方。谢谢你的重定向方法。然而,在PlayFramework(Scala)中是否有任何方式可以让测试用例自动重定向。我不想每次都重复重定向逻辑