mirror of
https://github.com/idanoo/php-resque.git
synced 2024-11-24 17:25:13 +00:00
Merge pull request #310 from chrisboulton/fix-connection-hhvm
Use a mock to test correct redis exceptions are surfaced
This commit is contained in:
commit
e023b7a75e
@ -108,13 +108,17 @@ class Resque_Redis
|
||||
* @param string|array $server A DSN or array
|
||||
* @param int $database A database number to select. However, if we find a valid database number in the DSN the
|
||||
* DSN-supplied value will be used instead and this parameter is ignored.
|
||||
* @param object $client Optional Credis_Cluster or Credis_Client instance instantiated by you
|
||||
*/
|
||||
public function __construct($server, $database = null)
|
||||
public function __construct($server, $database = null, $client = null)
|
||||
{
|
||||
try {
|
||||
if (is_array($server)) {
|
||||
$this->driver = new Credis_Cluster($server);
|
||||
}
|
||||
else if (is_object($client)) {
|
||||
$this->driver = $client;
|
||||
}
|
||||
else {
|
||||
list($host, $port, $dsnDatabase, $user, $password, $options) = self::parseDsn($server);
|
||||
// $user is not used, only $password
|
||||
|
@ -31,7 +31,15 @@ class Resque_Tests_JobTest extends Resque_Tests_TestCase
|
||||
*/
|
||||
public function testRedisErrorThrowsExceptionOnJobCreation()
|
||||
{
|
||||
Resque::setBackend('redis://255.255.255.255:1234');
|
||||
$mockCredis = $this->getMockBuilder('Credis_Client')
|
||||
->setMethods(['connect', '__call'])
|
||||
->getMock();
|
||||
$mockCredis->expects($this->any())->method('__call')
|
||||
->will($this->throwException(new CredisException('failure')));
|
||||
|
||||
Resque::setBackend(function($database) use ($mockCredis) {
|
||||
return new Resque_Redis('localhost:6379', $database, $mockCredis);
|
||||
});
|
||||
Resque::enqueue('jobs', 'This is a test');
|
||||
}
|
||||
|
||||
|
@ -13,8 +13,16 @@ class Resque_Tests_RedisTest extends Resque_Tests_TestCase
|
||||
*/
|
||||
public function testRedisExceptionsAreSurfaced()
|
||||
{
|
||||
$redis = new Resque_Redis('redis://255.255.255.255:1234');
|
||||
$redis->ping();
|
||||
$mockCredis = $this->getMockBuilder('Credis_Client')
|
||||
->setMethods(['connect', '__call'])
|
||||
->getMock();
|
||||
$mockCredis->expects($this->any())->method('__call')
|
||||
->will($this->throwException(new CredisException('failure')));
|
||||
|
||||
Resque::setBackend(function($database) use ($mockCredis) {
|
||||
return new Resque_Redis('localhost:6379', $database, $mockCredis);
|
||||
});
|
||||
Resque::redis()->ping();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user