Является ли Symfony WebTestCase только внутренним?

Является ли Symfony WebTestCase инструментом, который просто загружает ядро ​​и тестирует объект Response, или он порождает веб-сервер PHP и выполняет тест на сервере?

Это нужно для того, чтобы узнать, могу ли я протестировать устаревшее приложение, которое находится за пределами Symfony Framework.


person JorgeeFG    schedule 25.05.2017    source источник


Ответы (1)


Как видите, из исходного кода клиент, выполняющий запросы, определяется как служба под названием «test.client».

namespace Symfony\Bundle\FrameworkBundle\Test;
use Symfony\Bundle\FrameworkBundle\Client;
abstract class WebTestCase extends KernelTestCase
{
    protected static function createClient(array $options = array(), array $server = array())
    {
        static::bootKernel($options);
        $client = static::$kernel->getContainer()->get('test.client');
        $client->setServerParameters($server);
        return $client;
    }
}

И услуга определяется как

<service id="test.client" class="Symfony\Bundle\FrameworkBundle\Client" shared="false">
    <argument type="service" id="kernel" />
    <argument>%test.client.parameters%</argument>
    <argument type="service" id="test.client.history" />
    <argument type="service" id="test.client.cookiejar" />     
</service>

Symfony\Component\BrowserKit\Client::doRquest() - это тот, кто делает запрос. Является ли абстрактный метод реализованным в Symfony\Component\HttpKernel\Client::doRequest():

protected function doRequest($request)
{
    $response = $this->kernel->handle($request);
    if ($this->kernel instanceof TerminableInterface) {
        $this->kernel->terminate($request, $response);
    }
    return $response;
} 

Это означает, что запрос должен обрабатываться ядром. ... Углубляясь в код Вы можете видеть, что запрос должен совпадать с сервисом сопоставления. Это означает, что вы не можете запрашивать ресурсы вне symfony.

Если вы не знаете, как тестировать устаревший код,... вы можете использовать клиент Guzzle.

public function test200()
{
    $client = new GuzzleHttp\Client();

    $res = $client->request('GET', 'https://www.example.com');

    $this->assertEquals(
        200,
       $res->getStatusCode()
    );
}
person sensorario    schedule 25.05.2017