Scala Cats шпион метод с мокито-скала-кошками - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь смоделировать метод с mockito-scala-cats

Например

это мой класс

class MyService {

  def getProperty(property: String): Either[Future, String, ExternalUser] = ???

}

и тестовый класс

class MyServiceSpec extends FunSpec with MockitoSugar with MockitoCats {

  describe("MyServiceApiImpl") {
    it("get property") {
      val serviceApi = mock[MyService]
      whenF(serviceApi.getProperty("name")) thenReturn UserExternal()
    }
  }

}

Я получаю

Не удалось найти неявное значение для параметра a: cats.Applicative [[B] cats.data.EitherT [scala.concurrent.Future, String, B]]

1 Ответ

2 голосов
/ 23 мая 2019

Проверьте ваш импорт. Следующий код компилируется для меня

import org.mockito.MockitoSugar
import org.mockito.cats.MockitoCats
import org.scalatest.FunSpec

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global // check this import

import cats.data.EitherT
import cats.instances.future._ // and this import

class MyService {

  def getProperty(property: String): EitherT[Future, String, ExternalUser] = ???

}

class MyServiceSpec extends FunSpec with MockitoSugar with MockitoCats {

  describe("MyServiceApiImpl") {
    it("get property") {
      val serviceApi = mock[MyService]
      whenF(serviceApi.getProperty("name")) thenReturn ExternalUser()
    }
  }

}

case class ExternalUser()
...