【发布时间】:2020-04-01 16:40:51
【问题描述】:
我是猫和函数式编程的新手,我在单元测试函数数据类型(如EitherT)方面遇到了困难。有示例代码:
class Library[F[_]]() {
def create(book: Book)(implicit M: Monad[F]): EitherT[F, BookAlreadyExistsError, Book] = ...
}
我想使用 Spec2 对其进行测试,但我不知道如何正确进行。尝试过这样的事情,但它不起作用:
val library = Library[IO]()
test("create book") {
val book = Book("Title 1", 2016, "author 1")
(for (
resultBook <- library.create(book)
) yield resultBook shouldEqual ???
).unsafeRunSync()
}
我想要这样的非常简单的断言:
resultBook shouldEqual Right(Book("Title 1", 2016, "author 1"))
// or
resultBook shouldEqual Left(BookAlreadyExistsError)
【问题讨论】:
标签: scala functional-programming scala-cats specs2 cats-effect