public function testBeforePerformEventCanStopWork() { $eventDispatcher = new EventDispatcher(); $this->worker = new Worker($this->getMock('Resque\\Component\\Job\\Factory\\JobInstanceFactoryInterface'), $eventDispatcher); $eventDispatcher->addListener('resque.job.before_perform', function () { throw new \Exception('Take a break'); }); $eventTriggered = 0; $eventDispatcher->addListener(ResqueJobEvents::FAILED, function () use(&$eventTriggered) { $eventTriggered++; }); return $this->markTestIncomplete(); $job = new Job('Resque\\Component\\Job\\Tests\\Jobs\\Simple'); $queue = new RedisQueue($this->redis); $queue->setName('baz'); $job->setOriginQueue($queue); $this->assertFalse($this->worker->perform($job), 'Job was still performed even though "resque.job.before_perform" throw an exception'); $this->assertEquals(1, $eventTriggered, 'Expected event "resque.job.failed" was triggered for thrown exception on "resque.job.before_perform"'); }