m6web / redis-mock
提供Redis PHP模拟库的库
Requires
- php: >=7.1.0
Requires (Dev)
- atoum/atoum: ~3.4||~4.0
- predis/predis: ~1.1
- dev-master
- v5.6.0
- v5.5.0
- v5.4.0
- v5.3.0
- v5.2.0
- v5.1.0
- v5.0.1
- v5.0.0
- v4.7.0
- v4.6.1
- v4.6.0
- v4.5.0
- v4.4.1
- v4.4.0
- v4.3.0
- v4.2.1
- v4.2.0
- v4.1.0
- v4.0.0
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.8.0
- v2.7.0
- v2.6.0
- v2.5.0
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.1
- v2.0.0
- v1.12.0
- v1.11.0
- v1.10.0
- v1.9.0
- v1.8.0
- v1.7.0
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0.0
- dev-feature/test-extension
- dev-feature-hhvm-support
This package is auto-updated.
Last update: 2024-08-31 00:42:36 UTC
README
PHP 7.1库,提供Redis PHP模拟以供测试。
目前仅支持predis
安装
$ composer require --dev m6web/redis-mock
函数
它目前模拟以下Redis命令
它模拟 MULTI、DISCARD 和 EXEC 命令,但没有事务行为,只是使接口流畅并返回每个命令的结果。PIPELINE 和 EXECUTE 伪命令(客户端管道)也进行了模拟。EVAL、EVALSHA、WATCH 和 UNWATCH 只是存根——它们不会执行任何操作
用法
RedisMock库提供了一个工厂,可以构建你的Redis库的模拟类,可以直接注入到你的应用程序中
$factory = new \M6Web\Component\RedisMock\RedisMockFactory(); $myRedisMockClass = $factory->getAdapterClass('My\Redis\Library'); $myRedisMock = new $myRedisMockClass($myParameters);
以更简单的方式,如果你不需要用自定义参数实例化模拟类(例如,为了更容易使用Symfony配置文件注入模拟),你可以使用getAdapter
而不是getAdapterClass
来直接创建适配器
$factory = new \M6Web\Component\RedisMock\RedisMockFactory(); $myRedisMock = $factory->getAdapter('My\Redis\Library');
警告!
- RedisMock没有实现所有Redis功能和命令。如果父类使用不受支持的功能,模拟可能具有不期望的行为。
- 存储是静态的,因此由所有实例共享。
注意:默认情况下,如果父类实现了不受支持的命令,工厂会抛出异常。如果你想在构建时部分使用模拟,可以在构建时指定第二个参数$factory->getAdapter('My\Redis\Library', true)
。异常将在调用命令时抛出。
静态存储 & 多个服务器
RedisMock类中的存储按命名区域组织。默认区域的名称为空字符串''
,但你可以通过在调用工厂的getAdapter
方法时指定一个替代区域名称。
getAdapter($classToExtend, $failOnlyAtRuntime = false, $ignoreConstructor = true, $storage = '')
这允许模拟多个远程Redis服务器,每个服务器都有自己的存储区域。
然而,同一个区域在所有绑定到它的实例中仍然是静态共享的。
测试
开发环境由Vagrant提供,以及Xotelia箱。
$ cp Vagrantfile.dist Vagrantfile $ vagrant up $ vagrant ssh
$ cd /vagrant
$ composer install
$ ./vendor/bin/atoum
致谢
由Cytron团队的M6 Web开发。
使用atoum进行测试。
许可证
RedisMock在MIT许可证下授权。