【发布时间】:2020-06-21 13:00:25
【问题描述】:
我正在尝试为我的无标记代数编写测试,它使用MonadError。
这是带有解释器的无标记代数:
trait DbConnector[F[_]] {
def read(url: DbUrl, user: DbUser, pw: DbPw): F[DbParams]
}
object DbConnector {
def apply[F[_]](implicit dc: DbConnector[F]): dc.type = dc
def impl[F[_] : MonadError[*[_], Throwable]](env: Environment[F])
: DbConnector[F] =
new LiveDbConnector[F](env)
}
以及带有MonadError 实例Either 的测试类:
class DbConnectorSpec extends munit.FunSuite {
test("Environment variables are not set") {
val monadError = MonadError[IO[Either[DbError, DbParams]], DbError]
implicit val badEnv = DbConnector.impl(LiveBadEnvironment())
}
}
代码没有被编译,因为错误信息:
cats.effect.IO[Either[io.databaker.db.DbError,io.databaker.db.DbParams]] takes no type parameters, expected: 1
[error] val monadErr = MonadError[IO[Either[DbError, DbParams]], DbError]
MonadError 对我来说是新的,这是我第一次尝试使用它。我在https://www.scalawithcats.com/dist/scala-with-cats.html 上阅读了MonadError 的概念。
如何让它运行?
【问题讨论】:
标签: scala scala-cats