How can be fixed an error of PHPUnit when other local address (then - http://localhost) is used

72 Views Asked by At

My app starts locally by http : //sm1/app/web/app_dev.php (symfony3). PHPUnit test has been build by framework.

namespace Tests\AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class GoodControllerTest extends WebTestCase
{
    public function testCompleteScenario()
    {
        // Create a new client to browse the application
        $client = static::createClient([], ['HTTP_HOST' => 'sm1']);
        // Create a new entry in the database
        $crawler = $client->request('GET', '/good/');
        $this->assertEquals(200, 
            $client->getResponse()->getStatusCode(), 
            "Unexpected HTTP status code for GET /good/"
        );
        $crawler = $client->click(
            $crawler->selectLink('Create a new entry')->link());

But after test running I've got an error

There was 1 error:
1) Tests\AppBundle\Controller\GoodControllerTest::testCompleteScenario
InvalidArgumentException: The current node list is empty.

/home/sm1/www/app/vendor/symfony/symfony/src/Symfony/Component/DomCrawler/Crawler.php:735
/home/sm1/www/app/tests/AppBundle/Controller/GoodControllerTest.php:18

and in a log file this message:

request.INFO: Matched route "{route}".
    {"route":"good_index","route_parameters":
        {"_controller":"AppBundle\Controller\GoodController::indexAction",
            "_route":"good_index"},
        "request_uri":"http://sm1/good/","method":"GET"} []

How to fix "request_uri" from "http : //sm1/good/" to "http : //sm1/app/web/app_dev.php/good/" ?

1

There are 1 best solutions below

0
On

It is necessary to start web app only by http://app. That is, to use PHPUnit you need a virtual host. If the name of the input script is different from the default, note this in the file .htaccess.