コード例 #1
0
 public function testDecoratingMethods()
 {
     $conns = array();
     for ($i = 1; $i <= 3; $i++) {
         $conns[$i] = new Connection();
         $headers = $this->getMock('Guzzle\\Http\\Message\\Request', array('getCookie'), array('POST', '/', array()));
         $headers->expects($this->once())->method('getCookie', array(ini_get('session.name')))->will($this->returnValue(null));
         $conns[$i]->WebSocket = new \StdClass();
         $conns[$i]->WebSocket->request = $headers;
     }
     $mock = new MockComponent();
     $comp = new SessionProvider($mock, new NullSessionHandler());
     $comp->onOpen($conns[1]);
     $comp->onOpen($conns[3]);
     $comp->onOpen($conns[2]);
     $this->assertSame($conns[2], $mock->last['onOpen'][0]);
     $msg = 'Hello World!';
     $comp->onMessage($conns[1], $msg);
     $this->assertSame($conns[1], $mock->last['onMessage'][0]);
     $this->assertEquals($msg, $mock->last['onMessage'][1]);
     $comp->onClose($conns[3]);
     $this->assertSame($conns[3], $mock->last['onClose'][0]);
     try {
         throw new \Exception('I threw an error');
     } catch (\Exception $e) {
     }
     $comp->onError($conns[2], $e);
     $this->assertEquals($conns[2], $mock->last['onError'][0]);
     $this->assertEquals($e, $mock->last['onError'][1]);
 }