【发布时间】:2021-12-14 12:55:27
【问题描述】:
我正在尝试使用 Pest 编写一些测试并模拟我的模型。 我有一个接受两个模型的存储库,这是定义:
class MyRepo
{
public function __construct(private ModelA $modelA, private ModelB $modelB)
{
//
}
}
现在在我的测试中,我为ModelA 和ModelB 创建了两个模拟,并创建了存储库:
$modelA = mock(ModelA::class);
$modelB = mock(ModelB::class);
$repo = new MyRepo($modelA, $modelB);
运行此代码,我收到如下检查错误:
__construct(): Argument #1 ($modelA) must be of type App\Models\ModelA, Pest\Mock\Mock given
如果我删除 Repository 构造函数的类型检查,一切正常。
我试图找到解决方案,但目前我没有运气。我无法理解我需要进行哪些更改才能使其正常工作
【问题讨论】:
-
你为什么要嘲笑模特?它真的是 Laravel 模型吗?如果是这样,你永远不要模拟 Laravel 的模型,而是使用 Factories。
标签: laravel phpunit php-8 php-pest