我有一个小应用程序(2.1.2),它试图存储一些数据并执行重定向。我有两个规格:
"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是否记得跨测试或请求的状态?我需要做些什么来确保他们在隔离状态下运行吗?
编辑:
控制器中的代码如下所示:
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")
)发布于 2013-08-04 10:50:29
除非您在测试类、应用程序或保存数据的任何外部位置保留状态,否则PlayFramework2/Specs2 2不会在测试之间保持状态。
例如,如果您的应用程序将在一个测试中将用户保存到数据库,并在另一个测试中测试该用户是否存在,那么当然这会使您的测试相互干扰。
因此,我想您需要想出一些方法来清理数据库,在每次测试之间保存数据。
https://stackoverflow.com/questions/18037940
复制相似问题