2つの関数が定義されたScala特性を持つ場合は、def foo : Int => String
というシグネチャのみを使用して定義し、これらのメソッドの動作Scalatest Scalamockは、同じ関数が2つの方法で宣言されたときの動作が異なります
import org.scalamock.scalatest.MockFactory
import org.scalatest.{Matchers, WordSpec}
class DefTest {
trait DefTrait {
def foo : Int => String
def bar(myInt: Int) : String
}
class DefTest extends WordSpec with Matchers with MockFactory {
val defStub = stub[DefTrait]
defStub.bar _ when * returns "Works"
defStub.foo _ when * return "nope"
}
}
IntellJはToo many arguments for method when
とexpected: FunctionAdapter0[Boolean], actual: MatchAny
があると言います。
SBTは言う:
type mismatch;
[error] found : org.scalamock.matchers.MatchAny
[error] required: org.scalamock.function.FunctionAdapter0[Boolean]
[error] defStub.foo _ when * returns "nope"
[error] ^
これは私が思ってしまう:
- 関数宣言これらの2つのタイプの違いは何ですか?私はそれらが同等であると思っていました、そして、私は今までそれらを交換可能に使用することができたようです。
defStub.foo _ when 42 return "yay"
の構文で、署名関数の定義foo: Int => String
を使用することはできますか?