How to mock a function within Scala object using Mockito?
我真的是Scala的新手。 我尝试使用Mockito模拟一个简单的Scala函数,但出现以下错误。 我已经检查了互联网,但无法找到错误。
1 2 3 4 5 6 7 8 |
我的测试课在下面
1 2 3 4 5 6 7 8 |
但是我收到以下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Cannot mock/spy class com.pearson.tellurium.analytics.aggregation.TempScalaService$ Mockito cannot mock/spy following: - final classes - anonymous classes - primitive types org.mockito.exceptions.base.MockitoException: Cannot mock/spy class com.pearson.tellurium.analytics.aggregation.TempScalaService$ Mockito cannot mock/spy following: - final classes - anonymous classes - primitive types at org.scalatest.mock.MockitoSugar$class.mock(MockitoSugar.scala:74) at com.pearson.tellurium.analytics.aggregation.TempScalaServiceTest.mock(Temp ScalaServiceTest.scala:7) at com.pearson.tellurium.analytics.aggregation.TempScalaServiceTest$$anonfun$ 1.apply$mcV$sp(TempScalaServiceTest.scala:10) at com.pearson.tellurium.analytics.aggregation.TempScalaServiceTest$$anonfun$ 1.apply(TempScalaServiceTest.scala:9) at com.pearson.tellurium.analytics.aggregation.TempScalaServiceTest$$anonfun$ 1.apply(TempScalaServiceTest.scala:9) at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala: 22) at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85) |
您可以在对象扩展的特征中定义方法。 然后简单地模拟特征:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | trait Login { def login(userName: String, password: String): Boolean } object TempScalaService extends Login { def login(userName: String, password: String): Boolean = { if (userName.equals("root") && password.equals("admin123")) { return true } else return false } } //in your test val service = mock[Login] |
您无法模拟对象,请尝试将代码移至类:
1 2 3 4 5 6 7 8 |
并创建服务:
使用依赖项注入框架会更好,但是现在可以使用。
现在,为了进行测试,请使用:
您可以创建一个Scala伴生对象: