getMockBuilder(NullLogger::class) ->disableOriginalConstructor() ->onlyMethods(['error']) ->getMock(); $logger->expects($this->once())->method('error'); $handler = $this->getMockBuilder(JsonRpcHandler::class) ->disableOriginalConstructor() ->onlyMethods(['process']) ->getMock(); $handler->expects($this->exactly(2))->method('process')->willReturnOnConsecutiveCalls(new Exception(new \JsonException('foobar')), ['success']); $transport = $this->getMockBuilder(InMemoryTransport::class) ->setConstructorArgs([['foo', 'bar']]) ->onlyMethods(['send']) ->getMock(); $transport->expects($this->once())->method('send')->with('success'); $server = new Server($handler, $logger); $server->connect($transport); } }