object TestConsole extends Serializable
TestConsole
provides a testable interface for programs interacting with
the console by modeling input and output as reading from and writing to
input and output buffers maintained by TestConsole
and backed by a
Ref
.
All calls to putStr
and putStrLn
using the TestConsole
will write
the string to the output buffer and all calls to getStrLn
will take a
string from the input buffer. To facilitate debugging, by default output
will also be rendered to standard output. You can enable or disable this
for a scope using debug
, silent
, or the corresponding test aspects.
TestConsole
has several methods to access and manipulate the content of
these buffers including feedLines
to feed strings to the input buffer
that will then be returned by calls to getStrLn
, output
to get the
content of the output buffer from calls to putStr
and putStrLn
, and
clearInput
and clearOutput
to clear the respective buffers.
Together, these functions make it easy to test programs interacting with the console.
import zio.console._ import zio.test.environment.TestConsole import zio.ZIO val sayHello = for { name <- getStrLn _ <- putStrLn("Hello, " + name + "!") } yield () for { _ <- TestConsole.feedLines("John", "Jane", "Sally") _ <- ZIO.collectAll(List.fill(3)(sayHello)) result <- TestConsole.output } yield result == Vector("Hello, John!\n", "Hello, Jane!\n", "Hello, Sally!\n")
- Alphabetic
- By Inheritance
- TestConsole
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- final case class Data(input: List[String] = List.empty, output: Vector[String] = Vector.empty, errOutput: Vector[String] = Vector.empty) extends Product with Serializable
The state of the
TestConsole
. - trait Service extends Restorable
- case class Test(consoleState: Ref[Data], live: Live.Service, debugState: FiberRef[Boolean]) extends console.Console.Service with Service with Product with Serializable
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
- val any: ZLayer[Console with TestConsole, Nothing, Console with TestConsole]
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- val clearInput: URIO[TestConsole, Unit]
Accesses a
TestConsole
instance in the environment and clears the input buffer. - val clearOutput: URIO[TestConsole, Unit]
Accesses a
TestConsole
instance in the environment and clears the output buffer. - def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def debug[R <: TestConsole, E, A](zio: ZIO[R, E, A]): ZIO[R, E, A]
Accesses a
TestConsole
instance in the environment and runs the specified effect with theTestConsole
set to debug mode, so that console output is rendered to standard output in addition to being written to the output buffer. - val debug: ZLayer[Live, Nothing, Console with TestConsole]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def feedLines(lines: String*): URIO[TestConsole, Unit]
Accesses a
TestConsole
instance in the environment and writes the specified sequence of strings to the input buffer. - def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def make(data: Data, debug: Boolean = true): ZLayer[Live, Nothing, Console with TestConsole]
Constructs a new
Test
object that implements theTestConsole
interface.Constructs a new
Test
object that implements theTestConsole
interface. This can be useful for mixing in with implementations of other interfaces. - 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()
- val output: ZIO[TestConsole, Nothing, Vector[String]]
Accesses a
TestConsole
instance in the environment and returns the contents of the output buffer. - val outputErr: ZIO[TestConsole, Nothing, Vector[String]]
Accesses a
TestConsole
instance in the environment and returns the contents of the error buffer. - val save: ZIO[TestConsole, Nothing, UIO[Unit]]
Accesses a
TestConsole
instance in the environment and saves the console state in an effect which, when run, will restore theTestConsole
to the saved state. - def silent[R <: TestConsole, E, A](zio: ZIO[R, E, A]): ZIO[R, E, A]
Accesses a
TestConsole
instance in the environment and runs the specified effect with theTestConsole
set to silent mode, so that console output is only written to the output buffer and not rendered to standard output. - val silent: ZLayer[Live, Nothing, Console with TestConsole]
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- 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()