嘲弄超载 - 摘要 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);
我是 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);