嘲弄超载 - 摘要 Class

Mockery Overload - Abstract Class

我是 TDD 的新手,目前正在 Laravel 项目中编写测试,并且我正在使用 Mockery 库。我在尝试模拟重载一个新的 class 实例时遇到了一个问题。

问题似乎是模拟的 class 失去了继承性,因此在传递给方法时没有通过参数验证。但是,当我在不重载的情况下创建 Child 的模拟时,它的继承似乎被拾取了。

我必须 class 称为 Parent 和 Child。 Child 扩展 Parent.

// Test
public function test() {
    Mockery::mock('overload:Child');
    $results = service();
}

// Functions
public function service() {
    $child = new Child();
    serviceMethod($child);
}

public function serviceMethod(Parent $o) {
    // Do something
}

serviceMethod 期望 Parent 的 returns,而不是 Child。

我显然遗漏了一些关键细节,有人能为我指出吗?

我 运行 遇到了同样的问题。我们可以将基数 class 作为第二个参数传递。这将修复类型错误。

试试这个:

Mockery::mock('overload:Child', 'Parent');

Mockery::mock('overload:' . Child::class, Parent::class);