Основной метод для насмешки состоит в том, чтобы ввести интерфейс (если в текущем проекте его нет), который предоставляет методы для реального сервиса (зависимости), который подвергается моделированию. Тест проверяет, что тестируемый класс правильно взаимодействует с зависимостью. Правильно здесь означает, что он делает то, что вы ожидаете. Это не означает, что он делает правильные вещи, поскольку правильные вещи могут быть определены только интеграционным тестом, в котором используются реальные компоненты (то, что вы планируете делать, создавая настоящий файл).
Таким образом, вам нужно иметь метод в тестируемом классе, который позволит вам реализовать реализацию этого интерфейса. Наиболее очевидным является использование конструктора. У вас есть производственный конструктор, который инициализирует класс реальной реализацией интерфейса, который взаимодействует с реальной файловой системой, а затем тестируется, вы передаете макет конструктору.
В тесте вы запускаете методы класса и утверждаете, что интерфейс был вызван так, как вы ожидаете.
Отмечу, что появление после того, как класс создан, и модульное тестирование с помощью имитаций имеет ограниченную ценность, но это поможет заблокировать поведение, так что будущие изменения в классе неожиданным образом не сломают ожидания.
Надеюсь, это поможет вам начать.
Некоторые фреймворки поддержки имитируют реальные конкретные классы, что может иметь большой смысл в модульных тестах после тестирования (перехватывая вызовы реальных классов, а не только интерфейсов). Я не мог найти, позволяет ли EasyMock вам это сделать, но JDave , вероятно, то место, куда вам нужно, если вам нужна такая функциональность. Это даже позволяет вам высмеивать последние классы.