final case class Spec[-R, +E](caseValue: SpecCase[R, E, Spec[R, E]]) extends SpecVersionSpecific[R, E] with Product with Serializable
A Spec[R, E] is the backbone of _ZIO Test_. Every spec is either a suite,
which contains other specs, or a test. All specs require an environment of
type R and may potentially fail with an error of type E.
- Self Type
- Spec[R, E]
- Alphabetic
- By Inheritance
- Spec
- Serializable
- Serializable
- Product
- Equals
- SpecVersionSpecific
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
def
+[R1 <: R, E1 >: E](that: Spec[R1, E1]): Spec[R1, E1]
Combines this spec with the specified spec.
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
@@[R0 <: R1, R1 <: R, E0 >: E, E1 >: E0](aspect: TestAspect[R0, R1, E0, E1])(implicit trace: Trace): Spec[R1, E0]
Syntax for adding aspects.
Syntax for adding aspects.
test("foo") { assert(42, equalTo(42)) } @@ ignore
-
final
def
annotate[V](key: TestAnnotation[V], value: V)(implicit trace: Trace): Spec[R, E]
Annotates each test in this spec with the specified test annotation.
-
final
def
annotated(implicit trace: Trace): Spec[R, E]
Returns a new spec with the annotation map at each node.
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
- val caseValue: SpecCase[R, E, Spec[R, E]]
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
execute(defExec: ExecutionStrategy)(implicit trace: Trace): ZIO[R with Scope, Nothing, Spec[Any, E]]
Returns an effect that models execution of this spec.
-
final
def
filterAnnotations[V](key: TestAnnotation[V])(f: (V) ⇒ Boolean)(implicit trace: Trace): Option[Spec[R, E]]
Returns a new spec with only those tests with annotations satisfying the specified predicate.
Returns a new spec with only those tests with annotations satisfying the specified predicate. If no annotations satisfy the specified predicate then returns
Somewith an empty suite if this is a suite orNoneotherwise. -
final
def
filterLabels(f: (String) ⇒ Boolean)(implicit trace: Trace): Option[Spec[R, E]]
Returns a new spec with only those suites and tests satisfying the specified predicate.
Returns a new spec with only those suites and tests satisfying the specified predicate. If a suite label satisfies the predicate the entire suite will be included in the new spec. Otherwise only those specs in a suite that satisfy the specified predicate will be included in the new spec. If no labels satisfy the specified predicate then returns
Somewith an empty suite if this is a suite orNoneotherwise. -
final
def
filterNotTags(f: (String) ⇒ Boolean)(implicit trace: Trace): Option[Spec[R, E]]
Returns a new spec with only those suites and tests except for the ones with tags satisfying the predicate.
Returns a new spec with only those suites and tests except for the ones with tags satisfying the predicate. If all tests or suites have tags that satisfy the specified predicate then returns
Somewith an empty suite with the root label if this is a suite orNoneotherwise. -
final
def
filterTags(f: (String) ⇒ Boolean)(implicit trace: Trace): Option[Spec[R, E]]
Returns a new spec with only those suites and tests with tags satisfying the specified predicate.
Returns a new spec with only those suites and tests with tags satisfying the specified predicate. If no tags satisfy the specified predicate then returns
Somewith an empty suite with the root label if this is a suite orNoneotherwise. -
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
foldScoped[R1 <: R, E1, Z](defExec: ExecutionStrategy)(f: (SpecCase[R, E, Z]) ⇒ ZIO[R1 with Scope, E1, Z])(implicit trace: Trace): ZIO[R1 with Scope, E1, Z]
Effectfully folds over all nodes according to the execution strategy of suites, utilizing the specified default for other cases.
-
final
def
foreach[R1 <: R, E1](failure: (Cause[TestFailure[E]]) ⇒ ZIO[R1, TestFailure[E1], TestSuccess], success: (TestSuccess) ⇒ ZIO[R1, E1, TestSuccess])(implicit trace: Trace): ZIO[R1 with Scope, Nothing, Spec[R1, E1]]
Iterates over the spec with the sequential strategy as the default, and effectfully transforming every test with the provided function, finally reconstructing the spec with the same structure.
-
final
def
foreachExec[R1 <: R, E1](defExec: ExecutionStrategy)(failure: (Cause[TestFailure[E]]) ⇒ ZIO[R1, TestFailure[E1], TestSuccess], success: (TestSuccess) ⇒ ZIO[R1, E1, TestSuccess])(implicit trace: Trace): ZIO[R1 with Scope, Nothing, Spec[R1, E1]]
Iterates over the spec with the specified default execution strategy, and effectfully transforming every test with the provided function, finally reconstructing the spec with the same structure.
-
final
def
foreachPar[R1 <: R, E1](failure: (Cause[TestFailure[E]]) ⇒ ZIO[R1, TestFailure[E1], TestSuccess], success: (TestSuccess) ⇒ ZIO[R1, E1, TestSuccess])(implicit trace: Trace): ZIO[R1 with Scope, Nothing, Spec[R1, E1]]
Iterates over the spec with the parallel strategy as the default, and effectfully transforming every test with the provided function, finally reconstructing the spec with the same structure.
-
final
def
foreachParN[R1 <: R, E1](n: Int)(failure: (Cause[TestFailure[E]]) ⇒ ZIO[R1, TestFailure[E1], TestSuccess], success: (TestSuccess) ⇒ ZIO[R1, E1, TestSuccess])(implicit trace: Trace): ZIO[R1 with Scope, Nothing, Spec[R1, E1]]
Iterates over the spec with the parallel (
n) strategy as the default, and effectfully transforming every test with the provided function, finally reconstructing the spec with the same structure. -
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
mapError[E1](f: (E) ⇒ E1)(implicit ev: CanFail[E], trace: Trace): Spec[R, E1]
Returns a new spec with remapped errors.
-
final
def
mapLabel(f: (String) ⇒ String)(implicit trace: Trace): Spec[R, E]
Returns a new spec with remapped labels.
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
macro
def
provide[E1 >: E](layer: ZLayer[_, E1, _]*): ZSpec[Any, E1, TestSuccess]
Automatically assembles a layer for the spec, translating it up a level.
Automatically assembles a layer for the spec, translating it up a level.
- Definition Classes
- SpecVersionSpecific
-
final
def
provideEnvironment(r: ZEnvironment[R])(implicit trace: Trace): Spec[Any, E]
Provides each test in this spec with its required environment
-
final
def
provideLayer[E1 >: E, R0](layer: ZLayer[R0, E1, R])(implicit trace: Trace): Spec[R0, E1]
Provides a layer to the spec, translating it up a level.
-
final
def
provideLayerShared[E1 >: E, R0](layer: ZLayer[R0, E1, R])(implicit trace: Trace): Spec[R0, E1]
Provides a layer to the spec, sharing services between all tests.
-
macro
def
provideShared[E1 >: E](layer: ZLayer[_, E1, _]*): Spec[Any, E1]
Automatically assembles a layer for the spec, sharing services between all tests.
Automatically assembles a layer for the spec, sharing services between all tests.
- Definition Classes
- SpecVersionSpecific
-
def
provideSome[R0]: ProvideSomePartiallyApplied[R0, R, E]
Splits the environment into two parts, providing each test with one part using the specified layer and leaving the remainder
R0.Splits the environment into two parts, providing each test with one part using the specified layer and leaving the remainder
R0.val spec: ZSpec[Clock with Random, Nothing] = ??? val clockLayer: ZLayer[Any, Nothing, Clock] = ??? val spec2: ZSpec[Random, Nothing] = spec.provideSome[Random](clockLayer)
- Definition Classes
- SpecVersionSpecific
-
final
def
provideSomeEnvironment[R0](f: (ZEnvironment[R0]) ⇒ ZEnvironment[R])(implicit trace: Trace): Spec[R0, E]
Transforms the environment being provided to each test in this spec with the specified function.
-
final
def
provideSomeLayer[R0]: ProvideSomeLayer[R0, R, E]
Splits the environment into two parts, providing each test with one part using the specified layer and leaving the remainder
R0.Splits the environment into two parts, providing each test with one part using the specified layer and leaving the remainder
R0.val clockLayer: ZLayer[Any, Nothing, Clock] = ??? val spec: Spec[Clock with Random, Nothing] = ??? val spec2 = spec.provideSomeLayer[Random](clockLayer)
-
final
def
provideSomeLayerShared[R0]: ProvideSomeLayerShared[R0, R, E]
Splits the environment into two parts, providing all tests with a shared version of one part using the specified layer and leaving the remainder
R0.Splits the environment into two parts, providing all tests with a shared version of one part using the specified layer and leaving the remainder
R0.val clockLayer: ZLayer[Any, Nothing, Clock] = ??? val spec: Spec[Clock with Random, Nothing] = ??? val spec2 = spec.provideSomeLayerShared[Random](clockLayer)
-
final
def
provideSomeShared[R0]: ProvideSomeSharedPartiallyApplied[R0, R, E]
Splits the environment into two parts, providing all tests with a shared version of one part using the specified layer and leaving the remainder
R0.Splits the environment into two parts, providing all tests with a shared version of one part using the specified layer and leaving the remainder
R0.val spec: ZSpec[Int with Random, Nothing] = ??? val intLayer: ZLayer[Any, Nothing, Int] = ??? val spec2 = spec.provideSomeShared[Random](intLayer)
- Definition Classes
- SpecVersionSpecific
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
final
def
transform[R1, E1](f: (SpecCase[R, E, Spec[R1, E1]]) ⇒ SpecCase[R1, E1, Spec[R1, E1]])(implicit trace: Trace): Spec[R1, E1]
Transforms the spec one layer at a time.
-
final
def
updateService[M]: UpdateService[R, E, M]
Updates a service in the environment of this effect.
-
final
def
updateServiceAt[Service]: UpdateServiceAt[R, E, Service]
Updates a service at the specified key in the environment of this effect.
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
when(b: ⇒ Boolean)(implicit trace: Trace): Spec[R, E]
Runs the spec only if the specified predicate is satisfied.
-
final
def
whenZIO[R1 <: R, E1 >: E](b: ZIO[R1, E1, Boolean])(implicit trace: Trace): Spec[R1, E1]
Runs the spec only if the specified effectual predicate is satisfied.
Deprecated Value Members
-
macro
def
provideCustom[E1 >: E](layer: ZLayer[_, E1, _]*): ZSpec[TestEnvironment, E1, TestSuccess]
Automatically constructs the part of the environment that is not part of the
TestEnvironment, leaving an effect that only depends on theTestEnvironment.Automatically constructs the part of the environment that is not part of the
TestEnvironment, leaving an effect that only depends on theTestEnvironment. This will also satisfy transitiveTestEnvironmentrequirements withTestEnvironment.any, allowing them to be provided later.val spec: ZIO[UserRepo with Console, Nothing, Unit] = ??? val userRepoLayer: ZLayer[Database, Nothing, UserRepo = ??? val databaseLayer: ZLayer[Clock, Nothing, Database] = ??? // The TestEnvironment you use later will provide Clock to // `databaseLayer` and Console to `spec` val spec2 : ZIO[TestEnvironment, Nothing, Unit] = spec.provideCustom(userRepoLayer, databaseLayer)
- Definition Classes
- SpecVersionSpecific
- Annotations
- @deprecated
- Deprecated
(Since version 2.0.2) use provide
-
def
provideCustomLayer[E1 >: E, R1](layer: ZLayer[TestEnvironment, E1, R1])(implicit ev: <:<[TestEnvironment with R1, R], tagged: zio.EnvironmentTag[R1], trace: Trace): Spec[TestEnvironment, E1]
Provides each test with the part of the environment that is not part of the
TestEnvironment, leaving a spec that only depends on theTestEnvironment.Provides each test with the part of the environment that is not part of the
TestEnvironment, leaving a spec that only depends on theTestEnvironment.val loggingLayer: ZLayer[Any, Nothing, Logging] = ??? val spec: Spec[TestEnvironment with Logging, Nothing] = ??? val spec2 = spec.provideCustomLayer(loggingLayer)
- Annotations
- @deprecated
- Deprecated
(Since version 2.0.2) use provideLayer
-
def
provideCustomLayerShared[E1 >: E, R1](layer: ZLayer[TestEnvironment, E1, R1])(implicit ev: <:<[TestEnvironment with R1, R], tagged: zio.EnvironmentTag[R1], trace: Trace): Spec[TestEnvironment, E1]
Provides all tests with a shared version of the part of the environment that is not part of the
TestEnvironment, leaving a spec that only depends on theTestEnvironment.Provides all tests with a shared version of the part of the environment that is not part of the
TestEnvironment, leaving a spec that only depends on theTestEnvironment.val loggingLayer: ZLayer[Any, Nothing, Logging] = ??? val spec: Spec[TestEnvironment with Logging, Nothing] = ??? val spec2 = spec.provideCustomLayerShared(loggingLayer)
- Annotations
- @deprecated
- Deprecated
(Since version 2.0.2) use provideLayerShared
-
macro
def
provideCustomShared[E1 >: E](layer: ZLayer[_, E1, _]*): Spec[TestEnvironment, E1]
Automatically constructs the part of the environment that is not part of the
TestEnvironment, leaving an effect that only depends on theTestEnvironment, sharing services between all tests.Automatically constructs the part of the environment that is not part of the
TestEnvironment, leaving an effect that only depends on theTestEnvironment, sharing services between all tests.This will also satisfy transitive
TestEnvironmentrequirements withTestEnvironment.any, allowing them to be provided later.val spec: ZIO[UserRepo with Console, Nothing, Unit] = ??? val userRepoLayer: ZLayer[Database, Nothing, UserRepo = ??? val databaseLayer: ZLayer[Clock, Nothing, Database] = ??? // The TestEnvironment you use later will provide Clock to // `databaseLayer` and Console to `spec` val spec2 : ZIO[TestEnvironment, Nothing, Unit] = spec.provideCustomShared(userRepoLayer, databaseLayer)
- Definition Classes
- SpecVersionSpecific
- Annotations
- @deprecated
- Deprecated
(Since version 2.0.2) use provideShared