PHP 5.3 library providing a Redis PHP mock for your tests.
Add this line in your composer.json :
{
"require": {
"m6web/redis-mock": "~1.2"
}
}Update your vendors :
$ composer update m6web/redis-mock
It currently mocks these Redis commands :
| Redis command | Description |
|---|---|
| DELkey[key ...] | Deletes one or more keys |
| EXISTSkey | Determines if a key exists |
| EXPIREkeyseconds | Sets a key's time to live in seconds |
| KEYSpattern | Finds all keys matching the given pattern |
| TTLkey | Gets the time to live for a key |
| TYPEkey | Returns the string representation of the type of the value stored at key. |
| GETkey | Gets the value of a key |
| INCRkey | Increments the integer value of a key by one |
| INCRBYkeyincrement | Increments the integer value of a key by increment value |
| DECRkey | Decrements the integer value of a key by one |
| DECRBYkeydecrement | Decrements the integer value of a key by decrement value |
| SETkeyvalue | Sets the string value of a key |
| SETEXkeysecondsvalue | Sets the value and expiration of a key |
| SADDkeymember | Adds one member to a set |
| SISMEMBERkeymember | Determines if a member is in a set |
| SMEMBERSkey | Gets all the members in a set |
| SREMkeymember | Removes one member from a set |
| HDELkeyfield | Delete one hash fields |
| HEXISTSkeyfield | Determines if a hash field exists |
| HGETkeyfield | Gets the value of a hash field |
| HGETALLkey | Gets all the fields and values in a hash |
| HMSETkeyarray<field, value> | Sets each value in the corresponding field |
| HSETkeyfieldvalue | Sets the string value of a hash field |
| LPUSHkeyvalue | Pushs values at the head of a list |
| LPOPkey | Pops values at the head of a list |
| LREMkeycountvalue | Removes count instances of value from the head of a list |
| LTRIMkeystartstop | Removes the values of the key list which are outside the range start...stop |
| RPUSHkeyvalue | Pushs values at the tail of a list |
| RPOPkey | Pops values at the tail of a list |
| ZADDkeyscoremember | Adds one member to a sorted set, or update its score if it already exists |
| ZRANGEkeystartstop | Returns the specified range of members in a sorted set |
| ZRANGEBYSCOREkeyminmaxoptions | Returns a range of members in a sorted set, by score |
| ZREMkeymember | Removes one membner from a sorted set |
| ZREMRANGEBYSCOREkeyminmax | Removes all members in a sorted set within the given scores |
| ZREVRANGEkeystartstop | Returns the specified range of members in a sorted set, with scores ordered from high to low |
| ZREVRANGEBYSCOREkeyminmaxoptions | Returns a range of members in a sorted set, by score, with scores ordered from high to low |
| DBSIZE | Returns the number of keys in the selected database |
| FLUSHDB | Flushes the database |
It mocks MULTI, DISCARD and EXEC commands but without any transaction behaviors, they just make the interface fluent and return each command results. PIPELINE and EXECUTE pseudo commands (client pipelining) are also mocked.
RedisMock library provides a factory able to build a mocked class of your Redis library that can be directly injected in your application :
$factory = new \M6Web\Component\RedisMock\RedisMockFactory();
$myRedisMockClass = $factory->getAdapterClass('My\Redis\Library');
$myRedisMock = new$myRedisMockClass($myParameters);In a simpler way, if you don't need to instanciate the mocked class with custom parameters (e.g. to easier inject the mock using Symfony config file), you can use getAdapter instead of getAdapterClass to directly create the adapter :
$factory = new \M6Web\Component\RedisMock\RedisMockFactory();
$myRedisMock = $factory->getAdapter('My\Redis\Library');WARNING !RedisMock doesn't implement all Redis features and commands. The mock can have undesired behavior if your parent class uses unsupported features.
Note : the factory will throw an exception by default if your parent class implements unsupported commands. If you want even so partially use the mock, you can specify the second parameter when you build it $factory->getAdapter('My\Redis\Library', true). The exception will then thrown only when the command is called.
$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar install
$ ./vendor/bin/atoumDevelopped by the Cytron Team of M6 Web. Tested with atoum.
RedisMock is licensed under the MIT license.
