У меня есть класс, как это:PHPUnit: Как издеваться над частными методами?
class A {
private function testing($x)
{
// do something
$this->privateMethod();
}
private function privateMethod($number) {
// do something
}
}
Для вызова тестирования() Я использую это:
$reflection = new \ReflectionClass('A');
$method = $reflection->getMethod('testing');
$method->setAccessible(TRUE);
$object = new A();
$parameters = array();
$result = $method->invokeArgs($object, $parameters);
Но я не знаю, как издеваться privateMethod(). Я хочу проверить только код в методе testing(). Я хочу указать, что я хочу, чтобы privateMethod() возвращал результат без фактического вызова метода.
Я не думаю, что вам нужно протестировать частные методы и не издеваться над этим. Вы действительно должны тестировать публичные методы; на которые будут опираться другие классы. –
Пункт модульного тестирования - проверить свой публичный интерфейс. В конечном итоге ваш частный метод должен быть вызван где-то в вашем коде, вызванном общедоступным/защищенным методом. Теоретически, если ваш частный метод работает не так, как ожидалось, вызывающий код (который вы тестируете) не будет работать, поэтому любые утверждения, которые вы сделали, должны завершиться неудачно. – Crackertastic
Мой класс включает в себя один открытый метод и около 10 частных методов. Открытый метод просто вызывает несколько частных методов, и работа на самом деле делает их. Результат любого из них зависит от данных в databese. Как проверить эти методы? – micobg