Mockito匹配器,scala值类和NullPointerException
发布时间:2020-12-16 09:23:06 所属栏目:安全 来源:网络整理
导读:我正在使用mockito与scalatest.当使用匹配器和值类时,我有以下问题. import org.scalatest.FlatSpecimport org.scalatest.mock.MockitoSugarimport org.mockito.BDDMockito._import org.mockito.Matchers.anycase class FirstId(val value: String) extends
我正在使用mockito与scalatest.当使用匹配器和值类时,我有以下问题.
import org.scalatest.FlatSpec import org.scalatest.mock.MockitoSugar import org.mockito.BDDMockito._ import org.mockito.Matchers.any case class FirstId(val value: String) extends AnyVal case class SecondId(val value: String) extends AnyVal trait MockedClass { def someMethods(firstId: FirstId,secondId: SecondId): Int } class ValueClassSpec() extends FlatSpec with MockitoSugar { val mockedClass = mock[MockedClass] val secondId = SecondId("secondId") "Matchers" should "work for value class" in { // given given(mockedClass.someMethods(any[FirstId],org.mockito.Matchers.eq(secondId))).willReturn(3) // when val result = mockedClass.someMethods(FirstId("firstId"),secondId) // then assert(result == 3) } } 结果是: ValueClassSpec: Matchers - should work for value class *** FAILED *** java.lang.NullPointerException: at io.scalac.fow.party.ValueClassSpec$$anonfun$1.apply$mcV$sp(ValueClassSpec.scala:22) at io.scalac.fow.party.ValueClassSpec$$anonfun$1.apply(ValueClassSpec.scala:20) at io.scalac.fow.party.ValueClassSpec$$anonfun$1.apply(ValueClassSpec.scala:20) at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22) at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22) at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85) at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) at org.scalatest.Transformer.apply(Transformer.scala:22) at org.scalatest.Transformer.apply(Transformer.scala:20) at org.scalatest.FlatSpecLike$$anon$1.apply(FlatSpecLike.scala:1639) ... 我发现类似的问题(Scala Value classes and Mockito Matchers don’t play together),但没有任何建议. 有什么可以使用具有scala值类的mockito matchers吗? Lib版本:scala 2.11.2,mockito 1.10.8,scalatest 2.1.6 解决方法
正确的解决方案是:
case class StringValue(val text: String) extends AnyVal case class LongValue(val value: Long) extends AnyVal val eqFirst: StringValue = StringValue(org.mockito.Matchers.eq("first")) val anySecond: StringValue = StringValue(org.mockito.Matchers.any[String]) val eqFirst: LongValue = LongValue(org.mockito.Matchers.eq(1L)) val anySecond: LongValue = LongValue(org.mockito.Matchers.any[Long]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |