I’m writing a unit testing platform and I want to be able to dynamically generate a function based off of each function in the web service I am testing. The dynamic function would be generated with default(correct) values for each argument in the web service and allow them to be easily traded out with incorrect values for error testing.
$arrayOfDefVals = array(123, 'foo');
testFunctionGenerator('function1', $arrayOfDefVals);
//resulting php code:
function1Test($expectedOutput, $arg1=123, $arg2='foo')
{
try
{
$out = function1($arg1, $arg2);
if($expectedOutput === $out)
return true;
else
return $out;
}
catch ($e)
{
return $e;
}
}
This would allow me to quickly and cleanly pass one bad argument, or any number of bad arguments, at a time to test all of the error catching in the web service.
My main question is:
Is this even possible with php?
If it’s not possible, is there an alternative?
EDIT: I’m not looking for a unit test, I’m trying to learn by doing. I’m not looking for advice on this code example, it’s just a quick example of what I would like to do. I just want to know if it’s possible.
I would not try that first as PHP has not build-in macro support. But probably something in that direction:
Probably this is helpful, see Anonymous functionsDocs,
func_get_argsDocs, the Union array operatorDocs andcall_user_func_arrayDocs.