Перегрузка PHP для частных свойств и методов модульного тестирования

Я читал здесь несколько вопросов, касающихся использования модульного тестирования для тестирования частных методов и свойств. Я новичок в модульном тестировании и хотел бы получить информацию о методе, который я пытаюсь, чтобы мое тестирование могло получить доступ к частным / защищенным свойствам и методам.

В тесте, над которым я работал, я хотел подтвердить, что передача определенного параметра к объекту, в результате чего было установлено свойство. Я' m использую SimpleTest для обучения модульному тестированию, и мой метод тестирования выглядит следующим образом:

function test__Construction_Should_Properly_Set_Tables() {
  $cv = new CVObject( array( 'tables' => $this->standardTableDef ) );
  $tables = $cv->tables;
  $this->assertEqual( $tables, $this->standardTableDef );
}

Затем я написал метод __get в CVObject следующим образом:

function __get( $name ) {
  $trace = debug_backtrace();
  $caller = $trace[1];
  $inTesting = preg_match( '/simpletest/', $caller['file'] );

  if ( $inTesting ) {
    return $this->$name;
  } else {
    trigger_error( 'Cannot access protected property CVObject::$' .
                     $name . ' in ' . $trace[0]['file'] . ' on line ' .
                     $trace[0]['line'],
                    E_USER_NOTICE );
  }
}

Моя идея заключается в том, что если вызывающий файл из SimpleTest, продолжайте и сделать свойство доступным для целей тестирования, но в противном случае вызвать ошибку. Это позволяет мне сохранить частную собственность, но иметь возможность использовать ее при тестировании, что будет для меня более важным с конкретным частным методом, который я собираюсь начать писать.

Итак, мой вопрос: я здесь не хватает чего-то действительно плохого, и следует избегать этого метода?

8
задан Chuck 19 February 2011 в 09:50
поделиться