scala import zio._ import zio.test.Assertion._ import zio.test.mock._ import zio.test._ import zio.test.mock.Expectation._ trait DatabaseService { def getData: Task[String] } object MockDatabaseService extends Mock[DatabaseService] { object GetData extends Effect[Unit, Throwable, String] val compose: URLayer[Has[Proxy], DatabaseService] = ZLayer.fromServiceM { proxy => withRuntime.as { new DatabaseService { def getData: Task[String] = proxy(GetData) } } } } object MyService { def fetchData: ZIO[Has[DatabaseService], Throwable, String] = { for { dbService <- ZIO.service[DatabaseService] data <- dbService.getData } yield data } } object MyServiceSpec extends DefaultRunnableSpec { def spec: ZSpec[Environment, Failure] = suite("MyService")( testM("should return data") { val testData = "Test Data" val mock = MockDatabaseService.GetData returns ZIO.succeed(testData) assertM(MyService.fetchData)(equalTo(testData)).provideLayer(mock.toLayer) } ) }


上一篇:
下一篇:
切换中文