私のクラスでは、2 つのバージョンのメソッドがあります。1 つは 、もう 1 つはExceptionですString。
class Foo {
def method(e: Exception) = ???
def method(s: String) = ???
}
ではJMock、型に基づいてメソッドの呼び出しをモックできます。Exceptionテストで何を期待しているかを明確にするために、サブタイプ を使用していることに注意してください。
context.checking(new Expectations() {{
oneOf(mock).method(with(any(SubTypedException.class)));
}}
ではScalamock、ワイルドカードを使用して一致させることができます
(mock.method(_: Exception)).expects(*).once
以下は、特定のサブタイプで照合しようとするとコンパイルされません (これは Scala では意味がないことに気付きました)。
// doesn't compile
(mock.method(_: SubTypedException)).expects(*).once
with(any(SubTypesException.class))を に変換するにはどうすればよいJMockですScalamockか? 述語一致 ( ) を使用することは想像できますが、それでよいwhereでしょうか?
編集:考えてみると、JMock
with(any(SubTypedException))はコンパイラを満足させ、意図を表現することを目的としています。私が理解しているように、これMatcherはIsAnythingマッチャーであるため、別のタイプの例外がスローされた場合、実際にはテストに失敗しません。そのため、適切な状況下でインテントを取得し、テストに失敗することの両方を Scalamock に要求している可能性があります。
instanceOfScalamockのようなことを行う方法を説明する際のボーナス ポイント。