This project provides API to use an embedMongo database in your Scala tests
It is directly inspired by spec2-embedmongo project.
This works in a Java 6+ environment
- trait to use embedMongo OK (0.1 version)
- trait to use embedMongo fixture OK (0.1 version)
- deploy on maven central OK (0.1 version)
- build on scala 2.10 OK (0.2 version)
- cross compilation 2.9 & 2.10 OK (0.2 version)
- manage port uses for parallel testing TODO
- helpers for setup test with embedMongo TODO
scalatest-embedmongo is a SBT project.
It use 0.13.13 sbt version.
Only the following Scala versions 2.11 & 2.12 are currently supported.
The current version of the library is 0.2.4.
<dependency> <groupId>com.github.simplyscala</groupId> <artifactId>scalatest-embedmongo_2.12</artifactId> <version>0.2.4</version> <scope>test</scope> </dependency> libraryDependencies += "com.github.simplyscala" %% "scalatest-embedmongo" % "0.2.4" % "test" You could be tempted to try SNAPSHOT version to test project’s next features.
<project ...> <repositories> <repository> <id>maven snapshot</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </repository> </repositories> ... <dependency> <groupId>com.github.simplyscala</groupId> <artifactId>scalatest-embedmongo_2.12</artifactId> <version>0.2.5-SNAPSHOT</version> <scope>test</scope> </dependency> resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots" libraryDependencies += "com.github.simplyscala" %% "scalatest-embedmongo" % "0.2.5-SNAPSHOT" In order to use scalatest-embedmongo API, your test must extends MongoEmbedDatabase as follows:
import com.github.simplyscala.MongoEmbedDatabase ... MyTest extends FunSuite with MongoEmbedDatabase MyTest extends FunSuite with MongoEmbedDatabase with BeforeAndAfter { var mongoProps: MongodProps = null before { mongoProps = mongoStart() // by default port = 12345 & version = Version.3.3.1 } // add your own port & version parameters in mongoStart method if you need it after { mongoStop(mongoProps) } test("some test with mongo") { ... } } You can use fixture to start/stop the embed server with immutable way :
MyTest extends FunSuite with MongoEmbedDatabase { test("test with fixture") { //add your own port & version parameters in withEmbedMongoFixture method if you need it withEmbedMongoFixture() { mongodProps => // do some mongo database operations // in this fixture the dabatase is started // at the end of this fixture the database is stopped } } } Be careful if you launch yours tests in parallel you could have some trouble because of mongodb port multiples uses !
This file is written with .textile extension
