scala
import zio.{ZIO, UIO}
object Database {
def fetchData: UIO[String] = ZIO.succeed("Hello, ZIO!")
}
object MyApp {
def processData: ZIO[Database, Throwable, String] =
Database.fetchData.map(_.toUpperCase)
}
object MyAppTest extends zio.test.DefaultRunnableSpec {
def spec = suite("MyAppSpec")(
testM("processData returns correct result") {
for {
result <- MyApp.processData.provide(Database)
} yield assert(result)(equalTo("HELLO, ZIO!"))
}
)
}
scala
import zio.test.{run, DefaultRunnableSpec}
object Main extends App {
val testExecution = run(new MyAppTest)
zio.Runtime.default.unsafeRun(testExecution)
}
scala
libraryDependencies += "dev.zio" %% "zio-test" % "1.0.0" % "test",
libraryDependencies += "dev.zio" %% "zio-test-sbt" % "1.0.0" % "test"