Я не совсем уверен, как ответить на ваш вопрос, потому что я не понимаю, что вы пытаетесь проверить, но я верю, что вы хотите что-то вроде этого:
@Test
public void someTestMethod(@Mocked(methods="getFoos")final Bar mockedBar
@Mocked(methods="doSomething")final Foo mockedFoo {
final Set<Foo> foos = new HashSet<Foo>();
foos.add(new Foo());
new Expectations() {
{
mockedBar.getFoos(); returns(foos);
mockedFoo.doSomething();
}
};
new SomeClass().someMethod();
}
Используя это, JMockit будет высмеивать вызов getFoos
и возвращает Set foos
. Если вы посмотрите на параметры, которые я передаю, я делаю частичное макетирование классов Bar и Foo (я только высмеиваю вызовы методов getFoos и doSomething). Я также заметил, что в вашем блоке new Expectations
отсутствует набор скобок, так что это может определенно вызвать некоторые проблемы. Еще одна проблема, которую вы должны иметь в виду, заключается в том, что использование Expectations в отличие от NonStrictExpectations приведет к ошибке, если вы поместите более одного объекта в Set foos
, поскольку он ожидает только один вызов doSomething
. Если вы создадите тестовый пример, в котором foos
содержит более одного объекта, вы можете либо использовать NonStrictExpectations, либо использовать minTimes и maxTimes для указания ограничений на количество вызовов