>我有以下问题。我为我们的网站做API,客户必须使用他的函数作为我的函数中的回调。
例:
UserClass {
userMethod() {
return $data;
}
}
MyClass {
myFunction (callback ) {
doingSomething();
doingSomething();
$data = call_user_function($callback);
return doingSomethingWithData($data);
}
}
问题是,这是 API,我无法将客户类实现为回调,因为不存在,但我需要测试该函数将使用预期数据。有没有可能如何使用phpunit测试我的函数?
多谢
只需传入匿名函数,该函数返回可以预测输出的预期结果。确保它正确处理垃圾数据输出/边缘情况。您的测试可能如下所示:
class MyClassTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider myFunctionProvider
*/
public function testMyFunction($callback, $expected)
{
$this->assertEquals(
// Just as example you can create instance of class and call it.
MyClass::MyFunction($callback),
$expected
);
}
public function myFunctionProvider()
{
return [
[ function () { return 'a';}, 'a'],
[ function () { return 'c';}, 'c'],
[ function () { return 'b';}, 'b']
];
}
}
作为旁注,将您的代码更改为:
function MyFunc(callable $callback) {
}
这将确保你只能调用你的函数。