-
Notifications
You must be signed in to change notification settings - Fork 27
Testing
Yuki Yoshinoya edited this page Mar 3, 2015
·
25 revisions
You can use test helper for specs2.
Add the following settings in build.sbt or project/Build.scala.
libraryDependencies ++= Seq(
"com.github.aselab" %% "scala-activerecord" % "0.3.1",
"com.github.aselab" %% "scala-activerecord-specs" % "0.3.1" % "test",
"org.specs2" %% "specs2-core" % "2.4.16" % "test"
)
run.mode
is test
in Test.
test {
driver = "org.h2.Driver"
jdbcurl = "jdbc:h2:mem:test"
}
By default, schema class is models.Tables
.
If you would be change the schema class, please describe in some.packages.SchemaTables.[running mode].[setting key] = [setting value]
format.
some.packages.SchemaTables {
test {
driver = "org.h2.Driver"
jdbcurl = "jdbc:h2:mem:test"
autoCreate = true
autoDrop = true
}
}
You can use the com.github.aselab.activerecord.ActiveRecordSpecification
trait.
import com.github.aselab.activerecord._
object SomeModelSpecs extends ActiveRecordSpecification {
// You can override schema class in this specs (default models.Tables)
override def schema = some.packages.models.SomeTables
// You can override database configuration in this specs
override def config = Map(
"jdbcurl" -> "jdbc:h2:mem:tables"
)
// You can override beforeAll hook
override def beforeAll = {
// initialize schema
super.beforeAll
// test data creation
SomeModel("test1").create
}
// afterAll hook
override def afterAll = {
super.afterAll // reset database and cleanup sessions
}
"sample" should {
// Some specifications code
}
}
With mixin com.github.aselab.activerecord.AutoRollback
trait, automatically rollback for each created examples:
import com.github.aselab.activerecord._
object SomeModelSpecs extends ActiveRecordSpecification with AutoRollback {
// beforeAll does not rollback
override def beforeAll = {
super.beforeAll
SomeModel("prepared1").create
SomeModel("prepared2").create
SomeModel("prepared3").create
}
"context" should {
"specification example1" in {
SomeModel("test1").create
SomeModel("test2").create
SomeModel("test3").create
SomeModel.count mustEqual 6
}
"specification example2" in {
SomeModel.count mustEqual 3
}
}
}