Я новичок в 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 реализует Matcher<T>
), и существует метод Expectations.with, который принимает Matcher, поэтому я не уверен, почему Groovy пытается найти версию с этим принимает конкретный класс, а не интерфейс, указанный aNonNull. Я также попытался привести возвращаемое значение aNonNull к Matcher и Matcher<T>
без каких-либо изменений в ошибке. Я не уверен, что есть что-то о дженериках, что сбивает с толку Groovy или что еще нужно проверить.