【发布时间】:2022-01-16 03:40:20
【问题描述】:
我正在使用依赖注入来调用 Laravel 中的自定义服务,它工作正常。但是当我使用接口将这些依赖项注入我的 Phpunit 测试用例类时,我收到以下错误:
目标 [App\Services\Interfaces\CarServiceInterface] 不可实例化。
虽然接口已正确绑定到提供程序中的目标具体类。
我使用了不同的样式,例如通过__construct() 方法注入、注入到测试方法甚至调用app() 方法,但它们都不起作用。
测试文件:
private $carService;
public function setUp(): void
{
parent::setUp();
$this->carService = app(CarServiceInterface::class);
}
提供者:
$this->app->bind(
App\Services\Interfaces\CarServiceInterface::class,
App\Services\CarService::class
);
这样做的正确方法是什么?
【问题讨论】:
-
你在哪里写你的测试?在单元测试还是在功能测试部分?
-
@BABAKASHRAFI 在单元测试中
-
您需要在功能测试部分编写您的测试,因为它继承自具有
CreatesApplication特征的自定义测试用例。 -
@BABAKASHRAFI 好吧,我将测试移至功能部分,但我仍然收到错误。
-
可能是绑定错误。
标签: laravel unit-testing dependency-injection phpunit