'test', 'password' => 'topsecret', 'host' => 'test', ]; $adapter = $this->createMock(Adapter::class); $driver = $this->createMock(Driver::class); $configuration = $this->createMock(Configuration::class); $connection = $this->getMockBuilder(Connection::class) ->onlyMethods(['connectTo']) ->setConstructorArgs([ [ 'adapter' => $adapter, 'platform' => new MySQLPlatform(), 'tablePrefix' => 'nctest', 'primary' => $connectionParams, 'replica' => [ $connectionParams, ], ], $driver, $configuration, ]) ->getMock(); $driverConnection = $this->createMock(DriverConnection::class); $connection->expects(self::once()) ->method('connectTo') ->with('primary') ->willReturn($driverConnection); $connection->ensureConnectedToReplica(); $connection->ensureConnectedToPrimary(); $connection->ensureConnectedToReplica(); } public function testClusterConnectsToPrimaryAndReplica(): void { $connectionParamsPrimary = [ 'user' => 'test', 'password' => 'topsecret', 'host' => 'testprimary', ]; $connectionParamsReplica = [ 'user' => 'test', 'password' => 'topsecret', 'host' => 'testreplica', ]; $adapter = $this->createMock(Adapter::class); $driver = $this->createMock(Driver::class); $configuration = $this->createMock(Configuration::class); $connection = $this->getMockBuilder(Connection::class) ->onlyMethods(['connectTo']) ->setConstructorArgs([ [ 'adapter' => $adapter, 'platform' => new MySQLPlatform(), 'tablePrefix' => 'nctest', 'primary' => $connectionParamsPrimary, 'replica' => [ $connectionParamsReplica, ], ], $driver, $configuration, ]) ->getMock(); $driverConnection = $this->createMock(DriverConnection::class); $connection->expects(self::exactly(2)) ->method('connectTo') ->willReturn($driverConnection); $connection->ensureConnectedToReplica(); $connection->ensureConnectedToPrimary(); $connection->ensureConnectedToReplica(); } }