maatify/data-fakes
最新稳定版本:v1.0.4
Composer 安装命令:
composer require --dev maatify/data-fakes
包简介
Complete fake simulation layer for MySQL, DBAL, Redis, and Mongo adapters.
关键字:
README 文档
README
📘 Maatify Data Fakes
In-Memory Fake Adapters for MySQL, Redis, MongoDB & Repository Layer
Version: 1.0.4
Project: maatify/data-fakes
Maintained by: Maatify.dev
🚀 Overview
maatify/data-fakes is a deterministic, lightweight in-memory data simulation engine fully compatible with all official Maatify Data Adapters.
It allows any repository or service to run and be tested without any real databases, providing:
- Fake MySQL Adapter
- Fake MySQL DBAL Adapter
- Fake Redis Adapter
- Fake MongoDB Adapter
- Fake Repository Layer
- Unit of Work + Snapshot Engine (Phase 6)
- Fixtures Loader + FakeEnvironment (Phase 7)
- Advanced Simulation Layer: Latency + Failure Injection (Phase 8)
- Fully deterministic test isolation
- Zero external services required — perfect for CI
All Fake Adapters follow the exact same contracts used by real adapters across the Maatify ecosystem.
🔑 Core Dependencies
The core of the library is built on:
-
AdapterInterface
Maatify\Common\Contracts\Adapter\AdapterInterface -
ResolverInterface
Maatify\DataAdapters\Contracts\ResolverInterface
Every Fake Adapter implements AdapterInterface and is routed through ResolverInterface to ensure 1:1 behavior with real adapters.
🧩 Features
🗄️ Storage Features
- Fully in-memory storage layer
- Auto-increment & mixed ID handling
- Snapshot export/import (Phase 6)
- Deterministic state across tests
🔍 Query Features
- SQL-like filtering (where/in/like/order/limit)
- Mongo-like operators (
$in,$gt,$lte,$ne, …) - Redis-like operations (list, hash, strings, counters, TTL)
🧱 Repository Layer
- FakeRepository
- FakeCollection
- ArrayHydrator
🔄 Unit of Work (Phase 6)
- Nested transactions
- Snapshot-based rollback
- Transactional wrapper
- Fully deterministic
📦 Fixtures & Environment (Phase 7)
- JSON / array fixtures loader
- SQL + Mongo + Redis hydration
- FakeEnvironment with auto-reset
⚡ Advanced Simulation Layer (Phase 8)
Adds deterministic CI-safe fault injection:
🔹 ErrorSimulator
- Failure scenarios per operation
- Probability-based injection
- Deterministic exception throwing
🔹 LatencySimulator
- Per-operation latency
- Default latency
- Optional jitter
- Perfect for CI reproducibility
🔹 SimulationAwareTrait
Hooks used inside adapters:
guardOperation()- Latency simulation
- Failure simulation
📦 Installation
composer require maatify/data-fakes --dev
✔ Recommended for testing ✘ Not for production
🧪 Basic Usage
Using the Fake MySQL adapter
use Maatify\DataFakes\Adapters\MySQL\FakeMySQLAdapter; use Maatify\DataFakes\Storage\FakeStorageLayer; $storage = new FakeStorageLayer(); $mysql = new FakeMySQLAdapter($storage); $mysql->connect(); $mysql->insert('users', ['name' => 'Ada Lovelace']); $rows = $mysql->select('users', ['name' => 'Ada Lovelace']);
Reset Between Tests
$storage->reset();
📘 Usage Examples
All examples are available in: → docs/examples.md
📁 Fake Components Included
🗄️ Fake Adapters
- FakeMySQLAdapter
- FakeMySQLDbalAdapter
- FakeRedisAdapter
- FakeMongoAdapter
🧩 Repository Layer (Phase 5)
- FakeRepository
- FakeCollection
- ArrayHydrator
🔀 Routing
- FakeResolver
🔄 Unit of Work & Snapshots (Phase 6)
- FakeUnitOfWork
- SnapshotManager
- SnapshotState
📦 Fixtures & Environment (Phase 7)
- FakeFixturesLoader
- JsonFixtureParser
- FakeEnvironment
- ResetState
⚡ Simulation Layer (Phase 8)
- ErrorSimulator
- LatencySimulator
- FailureScenario
- SimulationAwareTrait
📚 Development Phases & Documentation Links
-
Phase 1 — Project Bootstrap & Core Architecture
docs/phases/README.phase1.md -
Phase 2 — Fake MySQL & DBAL Adapter
docs/phases/README.phase2.md -
Phase 3 — Fake Redis Adapter
docs/phases/README.phase3.md -
Phase 4 — Fake Mongo Adapter
docs/phases/README.phase4.md -
Phase 5 — Repository Layer
docs/phases/README.phase5.md -
Phase 6 — Snapshot Engine + Unit of Work
docs/phases/README.phase6.md -
Phase 7 — Fixtures Loader + FakeEnvironment
docs/phases/README.phase7.md -
Phase 8 — Advanced Simulation Layer (Latency + Failure Injection)
docs/phases/README.phase8.md
📝 Full Documentation
👉 README.full.md
Includes:
- Architecture
- Class reference
- API maps
- Fixtures & environments
- Snapshot behaviors
- Phase 1 → Phase 8 technical breakdown
🪪 License
MIT license © Maatify.dev
Free to use, modify, and distribute with attribution.
👤 Author
© 2025 Maatify.dev
Engineered by Mohamed Abdulalim (@megyptm)
https://www.maatify.dev
📘 Full documentation & source code:
https://github.com/Maatify/data-fakes
🤝 Contributors
Special thanks to the Maatify.dev engineering team and open-source contributors.
Built with ❤️ by Maatify.dev — Unified Ecosystem for Modern PHP Libraries
统计信息
- 总下载量: 489
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 2
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-22