3
在寫我面臨着以下異常測試:斯卡拉:模型初始化失敗,貓IO類型參數
java.lang.ClassCastException: codegen.java.lang.Object$MockitoMock$641592186 cannot be cast to cats.effect.IO (MyRepositorySpec.scala:19)
運行與specs2
這個測試代碼時出現這種情況:
class MyRepositorySpec extends Specification with Mockito with TestData {
...
val m = mock[MyDAO[IO]].smart
m.createTable returns IO { Right[Throwable, Int](1) } // <- this is line 19
val r = new MyRepository[IO](m)
r.setup.unsafeRunSync() must beNone
...
}
MyDAO
看起來像這樣:
class MyDAO[M[_] : Monad](val transactor: Transactor[M])(implicit val AE: ApplicativeError[M, Throwable]) extends DataAccessObject[M, MyObject]
和DataAccessObject
li關注此:
trait DataAccessObject[M[_], T <: Entity]
我很茫然如何修復/正確實施此。任何幫助,將不勝感激。謝謝!
感謝。沒有exacly,現在我得到'java.lang.ClassCastException:codegen.java.lang.Object $ MockitoMock $ 546148877不能轉換爲cats.effect.IO(null:-1)'。我還會檢查其他答案,也許我可以在那裏找到一些提示。 –
@RaphaelMäder如果使用'org.mockito.Mockito.mock(..)'而不是'org.specs2.mock.Mockito#mock(..)'它會改變什麼嗎? 'val m:MyDAO [IO] = org.mockito.Mockito.mock(classOf [MyDAO [IO]],org.mockito.Mockito.RETURNS_SMART_NULLS)'或'val m:IOMyDAO = org.mockito.Mockito.mock classOf [IOMyDAO],org.mockito.Mockito.RETURNS_SMART_NULLS)' –
This works!所以這是我猜測specs2 mockito包的問題。我會在他們的github上創建一個問題。非常感謝你!如果你更新你的答案,我會接受它。 –