我有一个函数,其他人写道,它在函数内部创建一个cURL包装对象。以下简体版本功能结构与单元测试私有函数
public function getCodes()
{
//do some stufff
$communicator = new Communicator();
$result = $communicator->call($this->API_KEY);
//do some stuff with $result
}
我的任务是学习PHPUnit并为此类代码编写测试。在这样做时,我发现当在函数内部创建对象时,测试这样的函数是非常困难的,并且测试不应该需要任何外部通信工作。
我们希望尽可能多的项目将我们的测试推到git上,但我们不希望意外或故意将我们的API凭据推送到git。
所以我的解决方案是保持getCodes()公开,但使它成为接受Communicator对象作为参数的私有函数的包装。然后我可以使用模拟Communicator对象来测试私有方法。
但是这意味着getCodes永远不会被测试(我的老板想要100%的代码覆盖率),而且我也读过你不应该在大多数情况下为私有函数编写测试。
所以我的问题基本上是,我该如何使用API调用为这样的函数编写测试。
我没有看到你的解决方案有什么问题。代码经过测试,不是吗? :) – ZhongYu
是的,但我不想实施黑客,如果我不需要或者如果有更好的方法。 – Ethan22
它真的是一个黑客。您重构了您的代码,并且新代码在设计方面很有意义。 – ZhongYu