draculaid / phpmocker
Create mock class for final classes and traits; Create mock method for static, private and final methods
Installs: 16
Dependents: 1
Suggesters: 0
Security: 0
Stars: 9
Watchers: 5
Forks: 0
Open Issues: 0
pkg:composer/draculaid/phpmocker
Requires
- php: ~8.1.0
 
Requires (Dev)
- phpunit/phpunit: ^9.0
 
This package is auto-updated.
Last update: 2025-10-29 03:18:33 UTC
README
Если ваш проект использует PHP7.4 - Следует смотерть ветку `master-7`. Эта ветка актуальна под PHP 8.1.0 и выше
Страница на Packagist и команды для добавления в композер (подробней об установке):
- для PHP 8.1 и выше 
composer require draculaid/phpmocker - для PHP 7.4.x - 8.0.x 
composer require draculaid/phpmocker dev-master-7 
Документация и Примеры
- Документация
 - Примеры, включая пример с использованием автозагрузчика композера и PhpUnit
 - Информация по разработке и улучшению библиотеки
 - История изменений
 
Библиотека PhpMocker позволяет создавать мок-классы (тестовые двойники классов) и использовать мок-методы (тестовые двойники методов), для:
- Финальных классов
 - Перечислений
 - Непосредственно для трейтов (а не классов, реализующих трейты)
 - Финальных, статических и приватных методов
 
PhpMocker работает вне зависимости от используемого фреймворка юнит тестирования, и даже вообще без него. Возможность превращать в мок-методы, все методы любых типов классов, достигается благодаря анализу PHP кода и его изменения в момент загрузки и выполнения кода класса, для этого PhpMocker предоставляет автозагрузчик классов (работающий как с композером, так и с любым другим автозагрузчиком)
PhpMocker также поддерживает создание мок-классов с помощью наследования (для классов, абстрактных классов и трейтов)
Для мок-методов доступно:
- Счетчик вызовов
 - Назначение ответа для вызова
 - Выброс любого исключения
 - Отработка пользовательской функции, в том числе эта с заменой ответа метода
 - Возврат значения аргументов по ссылке
 - Изменения значения аргументов метода
 
Все перечисленные возможности могут быть назначены для определенных агрументов метода.
PhpMocker также предоставляет возможность взаимодействия с непубличными элементами классов (методами, свойствами и константами) А также удобный механизм для создания объектов, с назначением свойств. Включая создания объектов, без вызова конструктора, или с вызовом не публичных конструторов.
В планах...
- Продолжить работу над документацией
 - Мок для функций
 - Мок для конструкций include() и require()