我一直试图在我的抽象类上使用phpunit进行测试,该类包含将由其子级共享的受保护方法。我一直在阅读关于私有/受保护的方法不应该被测试,因为这会使代码变得脆弱。在这种情况下,我不希望这些方法是公共API(虽然这不会伤害,它感觉不对),如果相同的父操作执行得很好,我也不想在每个孩子中测试。
因此,作为一个例子解释更多,我会尝试发布一个简单的
abstract class AbstractAuthenticator
{
abstract function authenticate();
protected function checkUserPrivilege()
{
... code
}
protected function checkEnvPrivileges()
{
... code
}
}
class BasicAuth extends AbstractAuthenticator
{
public function authenticate()
{
$this->checkUserPrivilege();
$this->checkEnvPrivileges();
... code
}
}
class AjaxAuth extends AbstractAuthenticator
{
public function authenticate()
{
$this->checkUserPrivilege();
$this->checkEnvPrivileges();
... code
}
}
我的问题(如果我可以做多个)是:
authenticate()
中调用谢谢大家。我认为这个问题很棘手,需要一些观点来研究,所以我会评论你的评论
答案 0 :(得分:0)
创建一个TestAuth类并在AbstractAuthenticatorTest中测试受保护的方法,该方法使用它而不是真正的* Auth对象。