public function testChainWorkFine() { $that = $this; $event = new Event(); $eventChain = $event->getEventChain(); $chain1 = function ($args) use($that) { $that->chain1Test(); }; $chain2 = function ($args) use($that) { $that->chain2Test(); }; $chain3 = function ($args) use($that) { $that->chain3Test(); }; $chain4 = function ($args) use($that) { $that->chain4Test(); }; $event->bind('chain1', $chain1); $event->bind('chain2', $chain2); $event->bind('chain3', $chain3); $event->bind('chain4', $chain4); $eventChain->join('chain1', 'chain2', 'chain3', 'chain4'); $event->fire('chain1'); $this->assertArrayHasKey('chain1', $this->dataMap, 'event chain1 fail'); $that->assertEquals('ok', $this->dataMap['chain1'], 'event chain1 fail'); $this->assertArrayHasKey('chain2', $this->dataMap, 'event chain2 fail'); $that->assertEquals('ok', $this->dataMap['chain2'], 'event chain2 fail'); $this->assertArrayHasKey('chain3', $this->dataMap, 'event chain3 fail'); $that->assertEquals('ok', $this->dataMap['chain3'], 'event chain3 fail'); $this->assertArrayHasKey('chain4', $this->dataMap, 'event chain4 fail'); $that->assertEquals('ok', $this->dataMap['chain4'], 'event chain4 fail'); }