TestConsole
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")
Type members
Classlikes
The state of the TestConsole.
The state of the TestConsole.
Value members
Concrete methods
Accesses a TestConsole instance in the environment and runs the
specified effect with the TestConsole set to debug mode, so that
console output is rendered to standard output in addition to being
written to the output buffer.
Accesses a TestConsole instance in the environment and runs the
specified effect with the TestConsole set to debug mode, so that
console output is rendered to standard output in addition to being
written to the output buffer.
Accesses a TestConsole instance in the environment and writes the
specified sequence of strings to the input buffer.
Accesses a TestConsole instance in the environment and writes the
specified sequence of strings to the input buffer.
Constructs a new Test object that implements the TestConsole
interface. This can be useful for mixing in with implementations of other
interfaces.
Constructs a new Test object that implements the TestConsole
interface. This can be useful for mixing in with implementations of other
interfaces.
Accesses a TestConsole instance in the environment and runs the
specified effect with the TestConsole set to silent mode, so that
console output is only written to the output buffer and not rendered to
standard output.
Accesses a TestConsole instance in the environment and runs the
specified effect with the TestConsole set to silent mode, so that
console output is only written to the output buffer and not rendered to
standard output.
Concrete fields
Accesses a TestConsole instance in the environment and clears the input
buffer.
Accesses a TestConsole instance in the environment and clears the input
buffer.
Accesses a TestConsole instance in the environment and clears the
output buffer.
Accesses a TestConsole instance in the environment and clears the
output buffer.
Accesses a TestConsole instance in the environment and returns the
contents of the output buffer.
Accesses a TestConsole instance in the environment and returns the
contents of the output buffer.
Accesses a TestConsole instance in the environment and returns the
contents of the error buffer.
Accesses a TestConsole instance in the environment and returns the
contents of the error buffer.
Accesses a TestConsole instance in the environment and saves the
console state in an effect which, when run, will restore the
TestConsole to the saved state.
Accesses a TestConsole instance in the environment and saves the
console state in an effect which, when run, will restore the
TestConsole to the saved state.