1

私はGroovy(およびJMockも同様)を初めて使用し、モックされているメソッドのパラメーターでマッチャーを使用する期待を構築するのに苦労しています。私がこのようなことをしようとすると:

    Expectations e = new Expectations();
    e.allowing(mockObject).doSomething(Expectations.with(aNonNull(ImmutableCollection.class)))
    e.will(returnValue(someResponse))

期待値を構築するときに次のエラーが発生します。

groovy.lang.MissingMethodException: No signature of method: static org.jmock.Expectations.with() is applicable for argument types: (org.hamcrest.core.IsNot) values: [not null]
Possible solutions: with(boolean), with(org.hamcrest.Matcher), with(byte), with(org.hamcrest.Matcher), with(char), with(org.hamcrest.Matcher)

aNonNull が返さMatcher<T>れ (org.hamcrest.core.IsNot implements Matcher<T>)、Matcher を取る Expectations.with メソッドがあるため、Groovy が指定されたインターフェイスではなく具象クラスを取る with のバージョンを見つけようとしている理由がわかりません非ヌルによって。また、aNonNull の戻り値を両方の Matcher にキャストMatcher<T>し、エラーを変更することも試みました。Groovy を混乱させるジェネリクスに関する何かがあるかどうか、または他に何を確認する必要があるかはわかりません。

4

1 に答える 1

1

JavaDoc によると、org.jmock.Expectations.with() は静的メソッドではなくインスタンスです。そのため、エラーが発生します。

ところで、Groovy 専用に構築されたテスト/モック フレームワークを使用すると、(Java コードをテストする場合でも) 作業がずっと簡単になります。たとえば、同じ期待は Spock (http://spockframework.org) では次のようになります。

mockObject.doSomething(_ as ImmutableCollection) >> someResponse

知っておくべきもう 1 つの Groovy モック フレームワークは、GMock (http://code.google.com/p/gmock/) です。

于 2010-12-01T23:58:25.707 に答える