首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨测试播放FakeRequest和Specs2记忆请求

跨测试播放FakeRequest和Specs2记忆请求
EN

Stack Overflow用户
提问于 2013-08-03 22:32:29
回答 1查看 1.1K关注 0票数 0

我有一个小应用程序(2.1.2),它试图存储一些数据并执行重定向。我有两个规格:

代码语言:javascript
复制
"save the user" in {
  running(FakeApplication()) {
    val Some(create) = route(
      FakeRequest(PUT, "/users")
        .withSession(("user-id", user_id))
        .withFormUrlEncodedBody(("username", any_username))
    )

    status(create) must equalTo(SEE_OTHER)
    redirectLocation(create).map(_ must equalTo("/profile")) getOrElse failure("missing redirect location")
  }
}

"display errors with missing username" in {
  running(FakeApplication()) {
    val Some(create) = route(
      FakeRequest(PUT, "/users")
        .withSession(("user-id", user_id))
    )

    status(create) must equalTo(BAD_REQUEST)
    contentAsString(create) must contain ("This field is required")
  }
}

当我运行这些测试时,第二个测试的结果与第一个测试的结果相同,所以是SEE_OTHER而不是BAD_REQUEST。当我改变测试的顺序时,两者都能正常工作。当我删除第一个时,第二个也会通过。

Scala / Play / Specs2是否记得跨测试或请求的状态?我需要做些什么来确保他们在隔离状态下运行吗?

编辑:

控制器中的代码如下所示:

代码语言:javascript
复制
val form: Form[User] = Form(
  mapping(
    "username" -> nonEmptyText
  )(user => User(username))(user=> Some(user.username))
)

form.bindFromRequest.fold(
  errors => BadRequest(views.html.signup(errors)),
  user => Redirect("/profile")
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-04 10:50:29

除非您在测试类、应用程序或保存数据的任何外部位置保留状态,否则PlayFramework2/Specs2 2不会在测试之间保持状态。

例如,如果您的应用程序将在一个测试中将用户保存到数据库,并在另一个测试中测试该用户是否存在,那么当然这会使您的测试相互干扰。

因此,我想您需要想出一些方法来清理数据库,在每次测试之间保存数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18037940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档