trait BaseOneServerPerTest extends TestSuiteMixin with ServerProvider
Trait that provides a new Application and running TestServer instance for each test executed in a ScalaTest Suite.
This TestSuiteMixin trait overrides ScalaTest's withFixture method to create a new Application and TestServer
before each test, and ensure they are cleaned up after the test has completed. The Application is available (implicitly) from
method app. The TestServer's port number is available as port (and implicitly available as portNumber, wrapped
in a PortNumber).
By default, this trait creates a new Application for each test using default parameter values, which
is returned by the newAppForTest method defined in this trait. If your tests need an Application with non-default
parameters, override newAppForTest to return it.
Here's an example that demonstrates some of the services provided by this trait:
package org.scalatestplus.play.examples.oneserverpertest
import org.scalatest._
import org.scalatestplus.play._
import play.api.{Play, Application}
import play.api.inject.guice._
import play.api.routing._
class ExampleSpec extends PlaySpec with OneServerPerTest {
// Override newAppForTest or use GuiceOneServerPerTest
implicit override def newAppForTest(testData: TestData): Application = new GuiceApplicationBuilder()
.configure(Map("ehcacheplugin" -> "disabled"))
.router(TestRoutes.router)
.build()
"The OneServerPerTest trait" must {
"provide a FakeApplication" in {
app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
"make the FakeApplication available implicitly" in {
def getConfig(key: String)(implicit app: Application) = app.configuration.getOptional[String](key)
getConfig("ehcacheplugin") mustBe Some("disabled")
}
"provide an http endpoint" in {
runningServer.endpoints.httpEndpoint must not be empty
}
"provide an actual running server" in {
import Helpers._
import java.net._
val url = new URL("http://localhost:" + port + "/boum")
val con = url.openConnection().asInstanceOf[HttpURLConnection]
try con.getResponseCode mustBe 404
finally con.disconnect()
}
}
}
- Self Type
- BaseOneServerPerTest with TestSuite with FakeApplicationFactory
- Source
- BaseOneServerPerTest.scala
- Alphabetic
- By Inheritance
- BaseOneServerPerTest
- ServerProvider
- TestSuiteMixin
- SuiteMixin
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def expectedTestCount(filter: Filter): Int
- Definition Classes
- SuiteMixin
- abstract def nestedSuites: IndexedSeq[Suite]
- Definition Classes
- SuiteMixin
- abstract def rerunner: Option[String]
- Definition Classes
- SuiteMixin
- abstract def run(testName: Option[String], args: Args): Status
- Definition Classes
- SuiteMixin
- abstract def runNestedSuites(args: Args): Status
- Attributes
- protected
- Definition Classes
- SuiteMixin
- abstract def runTest(testName: String, args: Args): Status
- Attributes
- protected
- Definition Classes
- SuiteMixin
- abstract def runTests(testName: Option[String], args: Args): Status
- Attributes
- protected
- Definition Classes
- SuiteMixin
- abstract def suiteId: String
- Definition Classes
- SuiteMixin
- abstract def suiteName: String
- Definition Classes
- SuiteMixin
- abstract def tags: Map[String, Set[String]]
- Definition Classes
- SuiteMixin
- abstract def testDataFor(testName: String, theConfigMap: ConfigMap): TestData
- Definition Classes
- SuiteMixin
- abstract def testNames: Set[String]
- Definition Classes
- SuiteMixin
- abstract val styleName: String
- Definition Classes
- SuiteMixin
- Annotations
- @deprecated
- Deprecated
(Since version 3.1.0) The styleName lifecycle method has been deprecated and will be removed in a future version of ScalaTest with no replacement.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- implicit final def app: Application
Implicit method that returns the
Applicationinstance for the current test.Implicit method that returns the
Applicationinstance for the current test.- Definition Classes
- BaseOneServerPerTest → ServerProvider
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def newAppForTest(testData: TestData): Application
Creates new instance of
Applicationwith parameters set to their defaults.Creates new instance of
Applicationwith parameters set to their defaults. Override this method if you need anApplicationcreated with non-default parameter values. - def newServerForTest(app: Application, testData: TestData): RunningServer
- Attributes
- protected
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def port: Int
The port used by the
TestServer.The port used by the
TestServer.- Definition Classes
- ServerProvider
- implicit def portNumber: PortNumber
Implicit
PortNumberinstance that wrapsport.Implicit
PortNumberinstance that wrapsport. The value returned fromportNumber.valuewill be same as the value ofport.- returns
the configured port number, wrapped in a
PortNumber
- Definition Classes
- ServerProvider
- implicit final def runningServer: RunningServer
- Definition Classes
- BaseOneServerPerTest → ServerProvider
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def testServerFactory: TestServerFactory
- Attributes
- protected
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- def withFixture(test: (BaseOneServerPerTest.this)#NoArgTest): Outcome
Creates new
Applicationand runningTestServerinstances before executing each test, and ensures they are cleaned up after the test completes.Creates new
Applicationand runningTestServerinstances before executing each test, and ensures they are cleaned up after the test completes. You can access theApplicationfrom your tests asappand theTestServer's port number asport.- test
the no-arg test function to run with a fixture
- returns
the
Outcomeof the test execution
- Definition Classes
- BaseOneServerPerTest → TestSuiteMixin
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)