trait MixedFixtures extends TestSuiteMixin with UnitFixture
Trait that helps you provide different fixtures to different tests: a Application, a TestServer, or one
of the Selenium WebDriverss.
Trait MixedFixtures can be mixed into any fixture.Suite. For convenience it is
mixed into MixedPlaySpec. In a fixture.Suite, tests can
take a no-arg function. MixedFixtures provides several no-arg function classes (classes extending Function0) that
can be used to provide different fixtures for different tests.
If a test needs a Application, use the App function, like this:
"provide an Application" in new App(fakeApp("ehcacheplugin" -> "disabled")) {
override def running() = app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
If a test needs an Application and running TestServer, use the Server function, like this:
"send 404 on a bad request" in new Server {
override def running() = {
import java.net._
val url = new URL("http://localhost:" + port + "/boom")
val con = url.openConnection().asInstanceOf[HttpURLConnection]
try con.getResponseCode mustBe 404
finally con.disconnect()
}
}
If a test needs an Application, running TestServer, and Selenium driver, use
one of functions Chrome, Firefox, HtmlUnit, InternetExplorer, or Safari.
If the chosen Selenium driver is unavailable on the host platform, the test will
be automatically canceled. Here's an example that uses the Safari function:
"provide a web driver" in new Safari(fakeApp()) {
override def running() = {
go to ("http://localhost:" + port + "/testing")
pageTitle mustBe "Test Page"
click on find(name("b")).value
eventually { pageTitle mustBe "scalatest" }
}
}
Here's a complete example:
package org.scalatestplus.play.examples.mixedfixtures
import play.api.test._
import org.scalatestplus.play._
import play.api.{Play, Application}
import play.api.inject.guice._
import play.api.routing._
class ExampleSpec extends MixedPlaySpec {
// Some helper methods
def buildApp[A](elems: (String, String)*) = new GuiceApplicationBuilder()
.configure(Map(elems:_*))
.router(TestRoutes.router)
.build()
def getConfig(key: String)(implicit app: Application) = app.configuration.getOptional[String](key)
"The App function" must {
"provide an Application" in new App(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
"make the Application available implicitly" in new App(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = getConfig("ehcacheplugin") mustBe Some("disabled")
}
}
"The Server function" must {
"provide an Application" in new Server(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
"make the Application available implicitly" in new Server(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = getConfig("ehcacheplugin") mustBe Some("disabled")
}
import Helpers._
"send 404 on a bad request" in new Server {
override def running() = {
import java.net._
val url = new URL("http://localhost:" + port + "/boom")
val con = url.openConnection().asInstanceOf[HttpURLConnection]
try con.getResponseCode mustBe 404
finally con.disconnect()
}
}
}
"The HtmlUnit function" must {
"provide an Application" in new HtmlUnit(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
"make the Application available implicitly" in new HtmlUnit(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = getConfig("ehcacheplugin") mustBe Some("disabled")
}
import Helpers._
"send 404 on a bad request" in new HtmlUnit {
override def running() = {
import java.net._
val url = new URL("http://localhost:" + port + "/boom")
val con = url.openConnection().asInstanceOf[HttpURLConnection]
try con.getResponseCode mustBe 404
finally con.disconnect()
}
}
"provide a web driver" in new HtmlUnit(buildApp()) {
override def running() = {
go to ("http://localhost:" + port + "/testing")
pageTitle mustBe "Test Page"
click on find(name("b")).value
eventually { pageTitle mustBe "scalatest" }
}
}
}
"The Firefox function" must {
"provide an Application" in new Firefox(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
"make the Application available implicitly" in new Firefox(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = getConfig("ehcacheplugin") mustBe Some("disabled")
}
import Helpers._
"send 404 on a bad request" in new Firefox {
override def running() = {
import java.net._
val url = new URL("http://localhost:" + port + "/boom")
val con = url.openConnection().asInstanceOf[HttpURLConnection]
try con.getResponseCode mustBe 404
finally con.disconnect()
}
}
"provide a web driver" in new Firefox(buildApp()) {
override def running() = {
go to ("http://localhost:" + port + "/testing")
pageTitle mustBe "Test Page"
click on find(name("b")).value
eventually { pageTitle mustBe "scalatest" }
}
}
}
"The Safari function" must {
"provide an Application" in new Safari(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
"make the Application available implicitly" in new Safari(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = getConfig("ehcacheplugin") mustBe Some("disabled")
}
import Helpers._
"send 404 on a bad request" in new Safari {
override def running() = {
import java.net._
val url = new URL("http://localhost:" + port + "/boom")
val con = url.openConnection().asInstanceOf[HttpURLConnection]
try con.getResponseCode mustBe 404
finally con.disconnect()
}
}
"provide a web driver" in new Safari(buildApp()) {
override def running() = {
go to ("http://localhost:" + port + "/testing")
pageTitle mustBe "Test Page"
click on find(name("b")).value
eventually { pageTitle mustBe "scalatest" }
}
}
}
"The Chrome function" must {
"provide an Application" in new Chrome(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
"make the Application available implicitly" in new Chrome(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = getConfig("ehcacheplugin") mustBe Some("disabled")
}
import Helpers._
"send 404 on a bad request" in new Chrome {
override def running() = {
import java.net._
val url = new URL("http://localhost:" + port + "/boom")
val con = url.openConnection().asInstanceOf[HttpURLConnection]
try con.getResponseCode mustBe 404
finally con.disconnect()
}
}
"provide a web driver" in new Chrome(buildApp()) {
override def running() = {
go to ("http://localhost:" + port + "/testing")
pageTitle mustBe "Test Page"
click on find(name("b")).value
eventually { pageTitle mustBe "scalatest" }
}
}
}
"The InternetExplorer function" must {
"provide an Application" in new InternetExplorer(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = app.configuration.getOptional[String]("ehcacheplugin") mustBe Some("disabled")
}
"make the Application available implicitly" in new InternetExplorer(buildApp("ehcacheplugin" -> "disabled")) {
override def running() = getConfig("ehcacheplugin") mustBe Some("disabled")
}
import Helpers._
"send 404 on a bad request" in new InternetExplorer {
override def running() = {
import java.net._
val url = new URL("http://localhost:" + port + "/boom")
val con = url.openConnection().asInstanceOf[HttpURLConnection]
try con.getResponseCode mustBe 404
finally con.disconnect()
}
}
"provide a web driver" in new InternetExplorer(buildApp()) {
override def running() = {
go to ("http://localhost:" + port + "/testing")
pageTitle mustBe "Test Page"
click on find(name("b")).value
eventually { pageTitle mustBe "scalatest" }
}
}
}
"Any old thing" must {
"be doable without much boilerplate" in { () =>
1 + 1 mustEqual 2
}
}
}
- Self Type
- MixedFixtures with FixtureTestSuite
- Source
- MixedFixtures.scala
- Alphabetic
- By Inheritance
- MixedFixtures
- UnitFixture
- TestSuiteMixin
- SuiteMixin
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- abstract class App extends (MixedFixtures.this)#NoArgHelper
NoArgsubclass that provides anApplicationfixture. - abstract class Chrome extends (MixedFixtures.this)#NoArgHelper with WebBrowser with ChromeFactory
NoArgsubclass that provides a fixture composed of anApplication, runningTestServer, and SeleniumChromeDriver. - abstract class Firefox extends (MixedFixtures.this)#NoArgHelper with WebBrowser with FirefoxFactory
NoArgsubclass that provides a fixture composed of aApplication, runningTestServer, and SeleniumFirefoxDriver. - type FixtureParam = Unit
- Definition Classes
- UnitFixture
- abstract class HtmlUnit extends (MixedFixtures.this)#NoArgHelper with WebBrowser with HtmlUnitFactory
NoArgsubclass that provides a fixture composed of anApplication, runningTestServer, and SeleniumHtmlUnitDriver. - abstract class InternetExplorer extends (MixedFixtures.this)#NoArgHelper with WebBrowser with InternetExplorerFactory
NoArgsubclass that provides a fixture composed of anApplication, runningTestServer, and SeleniumInternetExplorerDriver. - abstract class NoArgHelper extends NoArg
- abstract class Safari extends (MixedFixtures.this)#NoArgHelper with WebBrowser with SafariFactory
NoArgsubclass that provides a fixture composed of anApplication, runningTestServer, and SeleniumSafariDriver. - abstract class Server extends (MixedFixtures.this)#NoArgHelper
NoArgsubclass that provides a fixture composed of aApplicationand runningTestServer.
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 def withFixture(test: (MixedFixtures.this)#NoArgTest): Outcome
- Attributes
- protected
- Definition Classes
- TestSuiteMixin
- 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
- 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
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- 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: (MixedFixtures.this)#OneArgTest): Outcome
- Definition Classes
- UnitFixture
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)