我正在处理我的Web应用程序的表单,我想以我创建的表单测试输入字段,以确保它们将产生所需的结果。我对TDD完全不熟悉,所以我不确定如何制作假输入来测试我对输入字段的约束。
有人可以提供任何相关文档或发布一些示例代码吗?
非常感谢你。
答案 0 :(得分:0)
这是基本测试的样子:
import org.scalatest.FunSpec
import play.api.data.Form
import play.api.data.Forms._
class TddFormTest extends FunSpec {
case class Data(name: String, age: Int)
val form = Form(mapping("name" -> text(minLength = 1, maxLength = 25), "age" -> number)(Data.apply)(Data.unapply))
describe("a basic form") {
it("accepts name input") {
form.bind(Map("name" -> "Exactly 25 characters...."))
}
it("requires name to be non-empty") {
val boundForm = form.bind(Map("name" -> ""))
assert(boundForm.hasErrors)
assert(boundForm.errors("name").head.message == "error.minLength")
}
it("does not accept names over 25 characters") {
val boundForm = form.bind(Map("name" -> "whoah this name is too long!!!!!!"))
assert(boundForm.hasErrors)
assert(boundForm.errors("name").head.message == "error.maxLength")
}
it("fills from Data") {
val filledForm = form.fill(Data("Testerton Testertop", 42))
assert(!filledForm.hasErrors)
}
it("binds to Data") {
val name = "Testerton Testertop"
val age = 42
val boundForm = form.bind(Map("name" -> name, "age" -> age.toString))
assert(Data(name, age) == boundForm.get)
}
}
}
它使用简单的Map直接测试表单,以提供来自表单的值。您可以绑定到Request对象,但这是一种直接测试驱动表单约束的简单方法。您可以通过集成到页面中的表单的快乐路径测试来补充这一点,以确保所有内容都正确地连接在一起。这种事情在这里有一些报道:https://www.playframework.com/documentation/2.3.x/ScalaFunctionalTestingWithScalaTest