猫的搭配和效果

问题描述 投票:1回答:1

我是猫和函数式编程的新手,并且正在尝试对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
1个回答
3
投票

[specs2-cats提供specs2-cats特征以启用以下语法

IOMatchers

where

IOMatchers

这是一个可行的示例

library.create(book).value must returnValue(Right(book))
© www.soinside.com 2019 - 2024. All rights reserved.