Так что спасибо Маттео (phpunit в symfony2 — тесты не выполняются) Теперь я могу проверить свои функциональные тесты.
Теперь я получил следующую ошибку при запуске phpunit -c app
:
You must change the main Request object in the front controller (app.php)
in order to use the `host_with_path` strategy.
поэтому я изменил его в app.php, из:
$request = RequestFactory::createFromGlobals('host_with_path');
чтобы:
$request = Request::createFromGlobals();
Я также обновил свой swiftmailer-bundle с версии 2.3 до 5.4.0.
К сожалению, это не исправило мою ошибку.
а это мой ../app/config_test.yml
swiftmailer:
disable_delivery: true
Я что-то здесь упускаю?
Я не могу найти эту ошибку где-либо в Интернете. Кто-нибудь знает, как мне исправить эту ошибку?
После некоторых поисков я заметил, что app.php не был проблемой. Это был DefaultControllerTest.php. Ошибка может быть исправлена удалением следующих строк из DefaultControllerTest:
$crawler = $client->request('GET', '/hello/Fabien');
$this->assertTrue($crawler->filter('html:contains("Hello Fabien")')->count() > 0);
В связи с недавними разработками наша команда разработчиков решила прекратить использование Sonata. В качестве побочного эффекта эта ошибка была исправлена. Поэтому у меня не будет решения этой проблемы.
Проблема в том, что объект Client не использует ни app.php, ни app_dev.php.
Клиент создает запрос внутри. Так что это не будет запрос, который вам нужен.
Единственное решение, которое я вижу, это переопределить метод Symfony\Bundle\FrameworkBundle\Test\WebTestCase::createClient
вернуть вашего собственного клиента. Этот клиент несет ответственность за создание фактического объекта запроса. Ниже приводится текущее поведение.
namespace Symfony\Component\HttpKernel;
use Symfony\Component\BrowserKit\Client as BaseClient;
class Client extends BaseClient
{
...
/**
* Converts the BrowserKit request to a HttpKernel request.
*
* @param DomRequest $request A DomRequest instance
*
* @return Request A Request instance
*/
protected function filterRequest(DomRequest $request)
{
$httpRequest = Request::create($request->getUri(), $request->getMethod(), $request->getParameters(), $request->getCookies(), $request->getFiles(), $request->getServer(), $request->getContent());
foreach ($this->filterFiles($httpRequest->files->all()) as $key => $value) {
$httpRequest->files->set($key, $value);
}
return $httpRequest;
}
...
}
Вы должны переопределить метод filterRequest
вернуть вид запроса, который вы хотите.
Других решений пока нет …