예제 #1
0
 /**
  * Check if the message is requeued or not correctly.
  *
  * @dataProvider processMessageProvider
  */
 public function testProcessMessage($processFlag, $expectedMethod, $expectedRequeue = null)
 {
     $amqpConnection = $this->getMockBuilder('\\PhpAmqpLib\\Connection\\AMQPConnection')->disableOriginalConstructor()->getMock();
     $amqpChannel = $this->getMockBuilder('\\PhpAmqpLib\\Channel\\AMQPChannel')->disableOriginalConstructor()->getMock();
     $consumer = new Consumer($amqpConnection, $amqpChannel);
     $callbackFunction = function () use($processFlag) {
         return $processFlag;
     };
     // Create a callback function with a return value set by the data provider.
     $consumer->setCallback($callbackFunction);
     // Create a default message
     $amqpMessage = new AMQPMessage('foo body');
     $amqpMessage->delivery_info['channel'] = $amqpChannel;
     $amqpMessage->delivery_info['delivery_tag'] = 0;
     $amqpChannel->expects($this->any())->method('basic_reject')->will($this->returnCallback(function ($delivery_tag, $requeue) use($expectedMethod, $expectedRequeue) {
         \PHPUnit_Framework_Assert::assertSame($expectedMethod, 'basic_reject');
         // Check if this function should be called.
         \PHPUnit_Framework_Assert::assertSame($requeue, $expectedRequeue);
         // Check if the message should be requeued.
     }));
     $amqpChannel->expects($this->any())->method('basic_ack')->will($this->returnCallback(function ($delivery_tag) use($expectedMethod) {
         \PHPUnit_Framework_Assert::assertSame($expectedMethod, 'basic_ack');
         // Check if this function should be called.
     }));
     $consumer->processMessage($amqpMessage);
 }