Laravel 5和PHPUnit视图测试失败 - 标头已经发送

时间:2017-09-15 12:38:43

标签: laravel-5 phpunit

我有一个新设置的Laravel 5项目,其工作站点位于“/”。当我尝试使用tests/Feature/ExampleTest.php运行提供的功能测试PHPUnit 5.7.21时,我收到状态代码500.

1) Tests\Feature\ExampleTest::testBasicTest
Expected status code 200 but received 500.
Failed asserting that false is true.

测试类是提供的。

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    }
}

作为$response一部分的返回页面指出了以下错误。

ini_set(): Cannot change zlib.output_compression - headers already sent

我没有在提供的PHPUnit配置文件中更改任何值。

在我的中间件中,我使用压缩来确保网站的压缩输出。

<?php

namespace App\Http\Middleware;

use Closure;

class AfterMiddleware {
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {
        ini_set('zlib.output_compression', 'On');
        return $next($request);
    }
}

当我取消注释ini_set行时,一切顺利。我该怎么做才能启用压缩并能够运行PHPUnit?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

设置你的ini_set('zlib.output_compression', 'On');编辑php.ini文件,然后它将在你的应用程序中全局可用。

zlib.output_compression = On

如果您使用php --ini,您将获得已使用的ini文件列表及其使用的路径