2016-02-29 3 views
0

Я получаю следующее сообщение об ошибке в моем PHPUnit тестеЧастная функция ошибки с PHPUnit тестирования

Warning: Invalid callback Vc_Manager::__sleep, cannot access private method Vc_Manager::__sleep() 

Это вызвано тем, что функция __sleep() является приватным и функция __contruct() для класса также частные.

Как я могу использовать эту функцию в своем тестировании phpunit, не открывая функцию?

Полный код:

require_once('../splitTestNew.php'); 



class SplitTestTest extends PHPUnit_Framework_TestCase 
{ 


    public function setUp(){ 

    } 
    public function tearDown(){ } 
    /** 
    * @runInSeparateProcess 
    */ 
    public function testDefaultParameterValues() 
    { 

     $obj = new BSSplitTest(); 
     $this->assertTrue($obj->params['A'] == 50); 
     $this->assertTrue($obj->params['B'] == 50); 
     $this->assertTrue($obj->params['SplitCookieA'] == 'ACounter'); 
     $this->assertTrue($obj->params['SplitCookieB'] == 'BCounter'); 
     $this->assertTrue($obj->params['TableA'] == 'counter_a'); 
     $this->assertTrue($obj->params['TableB'] == 'counter_b'); 

    } 
+0

При тестировании библиотек, совместно использующих код с другими модулями в моем приложении, я использую Reflection (https://secure.php.net/manual/en/book.reflection.php) для проверки внутренних переменных или функциональных процессов на убедитесь, что мой код библиотеки работает так, как я ожидаю. Затем мое тестирование приложений использует общедоступные методы для работы с библиотекой. –

ответ

1

Если ваш конструктор является частным, то вы не можете иметь

$obj = new BSSplitTest(); 

Это означает, ваш конструктор является открытым, вы будете нуждаться в статический конструктор фабрики.

$obj = BSSplitTest::getInstance(); //or createInstance if not singleton 
0

Мы НИКОГДА не проверяем частные методы, это не имеет никакого смысла. Вам либо нужно сделать функцию открытой или тестовые функции, которые используют частный метод.

Кроме того, если конструктор тоже является закрытым, сначала нужно создать экземпляр класса (например, с использованием шаблона Factory), а затем вызвать функцию.

+0

Сама частная функция не тестируется, но требуемый файл вверху также включает файл wp-load.php для запроса типов сообщений. Это содержит частные функции из плагина Visual Composer для wordpress. Поэтому невозможно изменить функцию на публичную –

Смежные вопросы