lundi 18 mars 2019

Using Http Kernel instead of using Console Kernel for Testing in Laravel

Almost all Laravel projects hosted on Github use use Illuminate\Contracts\Console\Kernel; Console Kernel to create an application/ for bootstrapping the whole app for testing using vendor/bin/phpunit

For example this is the Voten laravel application https://github.com/voten-co/voten/blob/master/tests/CreatesApplication.php

<?php

namespace Tests;

use Illuminate\Contracts\Console\Kernel;

trait CreatesApplication
{
    /**
     * Creates the application.
     *
     * @return \Illuminate\Foundation\Application
     */
    public function createApplication()
    {
        $app = require __DIR__.'/../bootstrap/app.php';

        $app->make(Kernel::class)->bootstrap();

        return $app;
    }
}

I wonder why we don't use the use Illuminate\Contracts\Http\Kernel;

Is that because vendor/bin/phpunit starts normally within the commandline, so it's a requirement to use the Console Kernel instead of the Http one? I have searched online for the reason why is it like, but I didn't find an answer.

I know the difference between the two Kernels and when each one is being used. Here is a good answer about the difference between the two of them How to use Console Kernel is Laravel PHP?

I am sure there is a good reason for using Console Kernel for testing! But I don't why, can anyone explain that for me?

And is it possible then to use the Http Kernel instead of the Console kernel?

Aucun commentaire:

Enregistrer un commentaire