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 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
- implicit final def app: Application
Implicit method that returns the
Application
instance for the current test.Implicit method that returns the
Application
instance for the current test.- Definition Classes
- BaseOneServerPerTest → ServerProvider
- def newAppForTest(testData: TestData): Application
Creates new instance of
Application
with parameters set to their defaults.Creates new instance of
Application
with parameters set to their defaults. Override this method if you need anApplication
created with non-default parameter values. - final def port: Int
The port used by the
TestServer
.The port used by the
TestServer
.- Definition Classes
- ServerProvider
- implicit def portNumber: PortNumber
Implicit
PortNumber
instance that wrapsport
.Implicit
PortNumber
instance that wrapsport
. The value returned fromportNumber.value
will 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
- def withFixture(test: (BaseOneServerPerTest.this)#NoArgTest): Outcome
Creates new
Application
and runningTestServer
instances before executing each test, and ensures they are cleaned up after the test completes.Creates new
Application
and runningTestServer
instances before executing each test, and ensures they are cleaned up after the test completes. You can access theApplication
from your tests asapp
and theTestServer
's port number asport
.- test
the no-arg test function to run with a fixture
- returns
the
Outcome
of the test execution
- Definition Classes
- BaseOneServerPerTest → TestSuiteMixin