CakePHP 3.4.2 Prueba de la respuesta de POST siempre devolviendo NULL

Actualmente estoy probando una aplicación que simplemente busca un registro por la identificación dada. Funciona bien, pero las pruebas se niegan a devolver la respuesta en el código. Curiosamente, SOLO se muestra en la CLI.

Estoy usando phpunit proporcionado por cakephp:

"phpunit / phpunit": "^ 5.7 | ^ 6.0"

Aquí está el código en conflicto:

 $this->post('/comunas/findByBarrio',[
        'barrio_id'=>1
 ]);
 var_dump($this->_response->body());die(); //This is just a test which always returns NULL... while the CLI shows the actual response, which is a JSON.

También se produce el mismo problema al hacer GET o POST a cualquier otra acción. Pero aquí está el código del controlador de destino:

public function findByBarrio()
{
    $this->autoRender = false;
    if ($this->request->is('POST'))
    {
        $data = $this->request->getData();
        if (!empty($data['barrio_id']))
        {
            $this->loadModel('Comuna');

            $barrio_id = $data['barrio_id'];

            $comuna = $this->Comuna->find('list',['conditions' => ['barrio_id'=>$barrio_id]])
                ->hydrate(false)
                ->toArray();
            if ($comuna)
            {
                echo json_encode($comuna);
            }
            else
            {
                throw new NotFoundException('0');
                //echo 0; //Comuna no encontrada para el barrio recibido
            }               
        }
        else
        {
            echo -1;
        }
    }
}

¡Gracias de antemano!

ACTUALIZACIÓN 1: Solo he logrado obtener el resultado usando "ob_start ()" y "ob_get_clean ()" alrededor del método "$ this-> post". Aunque desearía que hubiera una forma más limpia ...

ACTUALIZACIÓN 2: ¡Ahora funciona! Simplemente usando la interfaz compatible con PSR-7. ¡Gracias! Aquí está el controlador corregido:

public function findByBarrio()
{
    $this->autoRender = false;

    $this->response = $this->response->withType('json'); //CORRECTION

    if ($this->request->is('POST'))
    {
        $data = $this->request->getData();
        if (!empty($data['barrio_id']))
        {
            $this->loadModel('Comuna');

            $barrio_id = $data['barrio_id'];

            $comuna = $this->Comuna->find('list',['conditions' => ['barrio_id'=>$barrio_id]])
                ->hydrate(false)
                ->toArray();
            if ($comuna)
            {
                $json = json_encode($comuna);

                $this->response->getBody()->write($json); //CORRECTION

            }
            else
            {
                //Comuna no encontrada para el barrio recibido
                $this->response->getBody()->write(0); //CORRECTION
            }               
        }
        else
        {
            //No se recibió el barrio
            $this->response->getBody()->write(-1); //CORRECTION
        }
    }

    return $this->response; //CORRECTION
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta