当试图模拟声明为的方法时
def foo: Int
带有
val mock = mock[MyClass]
(mock.foo _).expects().returning(10)
我出错了Error: Methods without a parameter list and by-name params can no longer be converted to functions as `m _`, write a function literal `() => m` instead
有一个技巧可以用来编写函数文字,但我不太明白如何将代码转换为等效的函数文字。
很高兴看到人们已经在使用ScalaMock 5了!我们在单元测试中的测试用例如下:
特点:
def noParamMethod(): String
相关测试:
(() => mockedTrait.noParamMethod()).expects().returning("yey")
它在代码中:https://github.com/paulbutcher/ScalaMock/blob/master/shared/src/test/scala/org/scalamock/test/mockable/TestTrait.scala
以及对它的测试:https://github.com/paulbutcher/ScalaMock/blob/22c26174bfb99b403af2be38ab35cabfe58f4c5f/shared/src/test/scala/org/scalamock/test/scalatest/BasicTest.scala#L39
值得一提的是,只有Scala2.13才能满足该版本的编译器更改。