Можно ли создать мок-объект, который реализует несколько интерфейсов с помощью EasyMock?
Возможно ли создать мок-объект, который реализует несколько интерфейсов с помощью EasyMock?
Например, интерфейс Foo
и интерфейс Closeable
?
В Rhino Mocks можно указать несколько интерфейсов при создании мок-объекта, но метод createMock()
в EasyMock принимает только один тип.
Можно ли достичь этого с помощью EasyMock, не прибегая к созданию временного интерфейса, который расширяет оба интерфейса Foo
и Closeable
, и затем не мокируя его?
2 ответ(ов)
Вы рассмотрели возможность использования чего-то вроде:
interface Bar extends Foo, Closeable {
}
А затем замокать интерфейс Bar
?
EasyMock это не поддерживает, поэтому вам придется прибегнуть к временной реализации интерфейса.
Кстати говоря, у меня возникают подозрения насчет кода – действительно ли метод должен обрабатывать объект как два разных экземпляра, в данном случае интерфейс Foo
и Closeable
?
Это предполагает, что метод выполняет несколько операций, и хотя я подозреваю, что одна из этих операций — это 'закрытие' Closeable
, было бы логичнее, если бы код вызывающего метода решал, нужно ли вообще 'закрывать' объект.
Такая структура кода позволяет держать 'открытие' и 'закрытие' в одном блоке try ... finally
, что, на мой взгляд, делает код более читабельным, а метод — более общим, позволяя передавать объекты, которые реализуют только интерфейс Foo
.
Как замокировать методы с возвращаемым типом void с помощью Mockito
Можно ли с помощью Mockito захватывать аргументы метода, вызываемого несколько раз?
Мокирование класса против мокирования его интерфейса
Запуск одного тестового метода с помощью Maven
Python - объект MagicMock не может быть использован в выражении 'await'