public function testAddJob() { $driver = new RabbitMQDriver($this->getConnection()); $queue = new Queue($driver); $queue->addJob(new Job('test', ['callback' => [self::class, 'jobCallback']])); $logger = $this->getMockBuilder(LoggerInterface::class)->getMock(); $logger->expects($this->atLeastOnce())->method('log')->will($this->returnCallback(function ($type, $data, $context = []) { if (LogLevel::ALERT == $type) { $this->assertEquals(LogLevel::ALERT, $type); $this->assertContains('error', $data); $this->assertArrayHasKey('exception', $context); $this->assertInstanceOf(\Exception::class, $context['exception']); $this->assertContains(self::$callbackErrorMessage, $context['exception']->getMessage()); } })); $worker = new Worker($queue, new CallbackExecutor(), 1); $worker->setLogger($logger); $worker->run(); }