Sobes.tech
Back to questions
Junior — Middle
92

Какое значение имеют фейки в процессе модульного тестирования?

Answer from AI

sobes.tech AI

Фейки (fakes) в модульном тестировании — это объекты, которые реализуют интерфейс или поведение реальных зависимостей, но с упрощённой логикой, позволяющей тестировать модуль изолированно. В отличие от моков, которые проверяют вызовы, фейки предоставляют реальную, но упрощённую функциональность.

Значение фейков в тестировании:

  • Позволяют избежать зависимости от внешних систем (например, баз данных, API), ускоряя тесты.
  • Обеспечивают более реалистичное поведение, чем простые заглушки (stubs).
  • Помогают выявлять ошибки в логике модуля без влияния внешних факторов.

Пример: вместо реального подключения к базе данных можно использовать фейковый репозиторий, который хранит данные в памяти.

class FakeUserRepository implements UserRepositoryInterface {
    private $users = [];

    public function addUser(User $user) {
        $this->users[$user->getId()] = $user;
    }

    public function findUserById($id) {
        return $this->users[$id] ?? null;
    }
}

Такой фейк позволяет тестировать логику работы с пользователями без реальной базы.