Laravel Testing / phpunit,使用依赖注入时传递的参数太少

时间:2019-03-28 07:27:08

标签: laravel testing dependency-injection phpunit

我正在尝试使用Laravel创建一个简单的测试。我的测试代码如下;

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Http\Controllers\Abc\AbcController;

class AbcTest extends TestCase
{

 /**
 * A basic test example.
 *
 * @return void
 */

private $abcController;

public function __construct (AbcController $abcController) {
    $this->abcController = $abcController;
}

public function testExample()
{
    $this->assertTrue(true);
}

但是,当我运行测试时,我遇到了这个错误,

PHP致命错误:未捕获的ArgumentCountError:函数Tests \ Feature \ abc :: __ construct()的参数太少,在/ var / www / nex / backend / vendor / phpunit / phpunit / src / Framework / TestSuite中传递了0。第151行上的php,在/var/www/nex/backend/tests/Feature/abc.php:28

中恰好为1

我一直在为项目的其余部分使用这种方法来执行依赖项注入。我不确定为什么它不适用于此特定代码。

感谢所有帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

选中https://laravel.com/docs/5.8/testing,您不应该在控制器上使用依赖注入。相反,您应该呼叫端点。

示例

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Http\Controllers\Abc\AbcController;

class AbcTest extends TestCase
{

    public function testExample()
    {
        $response = $this->get('/url');

        $response->assertOk();
    }
}