Laravel Testing / phpunit, слишком мало аргументов передано при использовании внедрения зависимостей - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь создать простой тест с 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: Uncaught ArgumentCountError: Слишком мало аргументов для функции Tests\ Feature \ abc :: __ construct (), 0 передано в /var/www/nex/backend/vendor/phpunit/phpunit/src/Framework/TestSuite.php в строке 151 и ровно 1 ожидается в / var / www / nex /backend / tests / Feature / abc.php: 28

Я использовал этот метод выполнения инъекций зависимостей для остальной части моего проекта.Я не уверен, почему он не работает с этим конкретным кодом.

Вся помощь приветствуется.

Спасибо!

1 Ответ

0 голосов
/ 28 марта 2019

Проверка https://laravel.com/docs/5.8/testing Вы не должны использовать Dependency Injection на контроллере.Вместо этого вам следует вызвать конечную точку.

Пример

<?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();
    }
}
...