在Laravel中使用Http内核而不是控制台内核进行测试

时间:2019-03-18 09:27:40

标签: laravel testing phpunit-testing

Github上托管的几乎所有Laravel项目都使用use Illuminate\Contracts\Console\Kernel;控制台内核来创建应用程序/,以引导整个应用程序进行测试,并使用vendor/bin/phpunit

例如,这是Voten laravel应用程序 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;
    }
}

我想知道为什么我们不使用use Illuminate\Contracts\Http\Kernel;

是因为vendor/bin/phpunit通常在命令行中启动,所以要求使用控制台内核而不是Http内核吗?我在网上搜索了为什么会这样,但没有找到答案。

我知道两个内核之间的区别以及何时使用每个内核。这是一个很好的答案,关于两者之间的区别 How to use Console Kernel is Laravel PHP?

我敢肯定有充分的理由使用控制台内核进行测试!但是我不为什么,有人可以为我解释吗?

然后可以使用Http内核而不是Console内核吗?

0 个答案:

没有答案