0

Можно ли создать мок-объект, который реализует несколько интерфейсов с помощью EasyMock?

10

Возможно ли создать мок-объект, который реализует несколько интерфейсов с помощью EasyMock?

Например, интерфейс Foo и интерфейс Closeable?

В Rhino Mocks можно указать несколько интерфейсов при создании мок-объекта, но метод createMock() в EasyMock принимает только один тип.

Можно ли достичь этого с помощью EasyMock, не прибегая к созданию временного интерфейса, который расширяет оба интерфейса Foo и Closeable, и затем не мокируя его?

2 ответ(ов)

0

Вы рассмотрели возможность использования чего-то вроде:

interface Bar extends Foo, Closeable {
}

А затем замокать интерфейс Bar?

0

EasyMock это не поддерживает, поэтому вам придется прибегнуть к временной реализации интерфейса.

Кстати говоря, у меня возникают подозрения насчет кода – действительно ли метод должен обрабатывать объект как два разных экземпляра, в данном случае интерфейс Foo и Closeable?

Это предполагает, что метод выполняет несколько операций, и хотя я подозреваю, что одна из этих операций — это 'закрытие' Closeable, было бы логичнее, если бы код вызывающего метода решал, нужно ли вообще 'закрывать' объект.

Такая структура кода позволяет держать 'открытие' и 'закрытие' в одном блоке try ... finally, что, на мой взгляд, делает код более читабельным, а метод — более общим, позволяя передавать объекты, которые реализуют только интерфейс Foo.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь