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上创建一个问题。非常感谢你!如果你更新你的答案,我会接受它。 –