shouldReceive('connection')->once()->andReturn($connection); $connection->shouldReceive('getDriverName')->once()->andReturn('mysql'); $connection->shouldReceive('getDatabaseName')->once()->andReturn('caiwu_business_mirror'); $connection->shouldReceive('table')->once()->with('information_schema.TABLES')->andReturn($query); $query->shouldReceive('where')->once()->with('TABLE_SCHEMA', 'caiwu_business_mirror')->andReturnSelf(); $query->shouldReceive('get')->once()->with(['TABLE_NAME', 'TABLE_ROWS', 'DATA_LENGTH', 'INDEX_LENGTH']) ->andReturn(new Collection([(object) [ 'TABLE_NAME' => 'fact_rows', 'TABLE_ROWS' => 123, 'DATA_LENGTH' => 4096, 'INDEX_LENGTH' => 1024, ]])); $method = new ReflectionMethod(BusinessDataPlan::class, 'tableSizes'); $sizes = $method->invoke(new BusinessDataPlan(), $placements); $this->assertSame(['rows' => 123, 'bytes' => 5120], $sizes['fact_rows']); } }