2

私は猫と関数型プログラミングが初めてで、のような関数型データ型の単体テストに苦労しています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)
4

1 に答える 1