我是 TDD 的新手。我被困在一些单元测试中......请看看我的代码......并提前感谢......
class Parser{
protected function _checkCurlExistence()
{
// Unable to to mock function_exists, thats why fallback with this method
return function_exists('curl_version');
}
public function checkCurlExtension()
{
// I want to test 2 situations from this method...
// 1. if curl extension exists
// 2. or when curl extension does not exists...throw error
if($this->_checkCurlExistence() === false){
try{
throw new CurlException(); //Some curl error handler exception class
}catch(CurlException $error){
exit($error->getCurlExtensionError());
}
}
return true;
}
}
想测试:
class ParserTest{
/**
* @expectedException CurlException
*/
public function testCheckCurlExtensionDoesNotExists()
{
//Some testing code with mocking...
}
public function testCheckCurlExtensionExists()
{
//Some testing code with mocking..and assertion
}
}
我的问题/要求:
请你填写这些测试。我永远被困在这上面……无法继续我的 TDD 之旅。
一些步骤(您可以跳过这些行):
我已经尽我所能自己解决这个问题,但无法这样做。有些步骤是..
我尝试了 phpunit 的原生mockery 、 padraic/mockery (git)、codeception/aspect-mock (git) 来模拟两种情况下的 _ checkCurlExistence()方法……我不确定我是否做得对……这就是为什么,不是发布那些代码...
我尝试了Reflection Api,类扩展,通过魔术方法__call()... 将受保护的方法动态转换为公共方法以帮助模拟...
我也做了很多谷歌搜索。了解最佳实践是仅测试公共方法。但是我的公共方法依赖于受保护的方法......所以我该如何测试???