我正在尝试使用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我一直在为项目的其余部分使用这种方法来执行依赖项注入。我不确定为什么它不适用于此特定代码。
感谢所有帮助。
谢谢!
答案 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();
}
}