-1

基于:测试重定向后加载的页面

Play!2.0 框架(Scala)确实有我们可以用来进行重定向的 API。但是,在 Play Framework ( Scala ) 中有什么方法可以让测试用例自动跟随重定向响应。我不想每次都重复重定向逻辑。

如何在 Play Framework (Scala) 的测试用例中遵循重定向?

4

1 回答 1

1

编辑:使其完全清楚。没有内置的方法可以做到这一点,这是有充分理由的。单元测试应该是简单和孤立的。单个单元测试旨在测试单个功能。

示例:您GET向需要身份验证的页面发出请求,但您没有提供凭据,因此服务器响应SEE OTHER并附加了一条消息。然后,您确保它适当地响应了该请求。测试结束。响应的控制器函数SEE OTHER应该不知道另一个,除了它可能会对闪存数据做一些事情。

示例 2:您GET向附加了 flash 数据的登录页面发出请求。服务器响应OK并显示其中的 Flash 消息的 HTML 视图。你确保它这样做。

如果您真的想将这两者联系在一起,那么使用WithBrowser进行的测试可能更适合您。


如果您正在测试重定向信息,最好将其与重定向指向的任何控制器功能/视图隔离开来。您可以使用测试助手来实现此目的。

假设您要测试

Redirect("/login").flashing("message" -> "You are not logged in.")

在您的测试中,您可以使用这些助手:

import play.api.test._

val request = FakeRequest(GET, "/secretpage")
val Some(result) = route(request)
status(result) must equalTo(SEE_OTHER)
redirectLocation(result) must beSome("/login")
flash(result).get("message") must beSome("You are not logged in.")

请注意,这适用于 Play 2.1.x 及更高版本。如果您使用的是 2.0.x,则应更改routerouteAndCall.

于 2014-06-16T17:32:05.953 回答