Jon*_*and 5 php unit-testing laravel mockery
我对 TDD 相当陌生,目前正在 Laravel 项目中编写测试,并且正在使用 Mockery 库。我在尝试模拟重载新类实例时遇到了问题。
问题似乎是模拟类失去了继承性,因此在传递给方法时没有通过参数验证。然而,当我创建 Child 的模拟而不重载其继承时,似乎会被拾取。
我必须上名为“家长和孩子”的课程。孩子扩展了父母。
// 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
}
Run Code Online (Sandbox Code Playgroud)
这会返回 serviceMethod 需要 Parent,而不是 Child。
我显然在这里遗漏了一些关键细节,有人能为我指出吗?
我遇到了同样的问题。我们可以传递基类作为第二个参数。这将修复类型错误。
尝试这个:
Mockery::mock('overload:Child', 'Parent');
Run Code Online (Sandbox Code Playgroud)
或者
Mockery::mock('overload:' . Child::class, Parent::class);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1623 次 |
| 最近记录: |