【发布时间】:2015-06-02 10:49:04
【问题描述】:
如何测试方法 Bar::foo?
class Foo {
protected function foo() {
// Do something
}
}
class Bar extends Foo {
protected function foo() {
parent::foo();
// Do something else
}
}
我需要模拟 Foo::foo 而没有
Fatal error: Access level to Bar::foo() must be public (as in class Foo)...
??
【问题讨论】:
-
您确定
Foo::foo受到保护吗?错误消息告诉您否则。Foo::foo在那里是公开的,这意味着Bar正在破坏继承的合同。子类可以将protected方法变成public方法(增加可见性),但它不能限制可见性(即public到protected是不允许的)。无论哪种方式:使用反射类将方法公开并设置 -
当我试图模拟它时它会公开。
-
你在模拟什么类/对象,在哪里以及如何?
Bar或Foo,您如何将可见性更改为public?显示代码
标签: php unit-testing phpunit