Pregunta

Estoy tratando de usar SIMPLETEST CON CODIGNIGNITER, usando el código suministrado por MAROONBYTES . Estoy usando la lámpara y NetBeans 6.9.

La página Test.php se carga en mi navegador. Tengo una prueba de talón en su lugar y se muestra en las selecciones desplegables. Cuando intento ejecutarlo, obtengo 2 errores PHP:

Mensaje: include_once (/var/www/sparts3/main/tests/basic_test_v.php): Error al abrir Stream: No hay dicho archivo o directorio

Mensaje: include_once (): Apertura fallida '/var/www/sparts3/main/tests/basic_test_v.php' para incluir (include_path= '.: / usr / share / php: / usr / share / pera')

La ruta es incorrecta: basic_test_v.php está en una subcarpeta / pruebas / vistas .

El depurador apunta a esto en test.php :

function add_test($file, &$test)

Por alguna razón, NetBeans no expone el valor de $ Archivo en este punto. ¿Esto significa que está vacío?

Ya he encontrado una línea de código porque me hace más allá de una página de código 404 no encontrada. Parecía que el depurador obtuvo estaba causando que el validador falle. Así que agregué un criterio, en mi forma ignorante (estoy seguro de que debería ser una excepción manejada o algo):

if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START')
    {   ...  }

¿Cómo puedo resolver esto? Por cierto, esto se intenta resolver Mi otra publicación , que voy a actualizar; Parecía mejor hacer esto una pregunta discreta.


Actualizar 1: He estado usando el complemento del desarrollador web (Firefox) para experimentar con las entradas de POST. Creo que estos están siendo malictados en el código. Aún aparece que NetBeans está obstaculizado en mostrar algunas variables de cadena mientras se depura; Esto es frustrante.

Actualización 2: Me parece que las paradas de procesamiento de código válidas en el mismo punto NetBeans se detienen a visualizar variables. Estoy pasando por test.php . Estoy a la parte de una función, add_test ($ file, & $ prueba) . Estas funciones se abre con una declaración IF; Eso termina bien, y puedo ver las variables. Luego, una nueva instrucción IF:

if (file_exists($implementation))
{
    require_once ($implementation); ...

Tan pronto como estoy en esa línea, 2 cosas suceden:

  1. La pantalla de las variables en NetBeans se queda en blanco A excepción de los superglobales
  2. el código se comporta como si $ implementación es una variable vacía
  3. Añadido una declaración justo por encima de estas líneas:

    $implementation = 'http://var/www/sparts3/main/tests/views/basic_test_view.php';
    

    Esto no cambia nada. La salida del navegador es la misma si estoy usando NetBeans / Xdebug o no.

    Así que está empezando a parecerse a un fallo de procesamiento de PHP. ¿Existen esos? Puedo intentar cargar e intentar de servicio de host, solo para pistas de diagnóstico, y sin alegría, porque CI sin la capacidad de depurar no es de ningún interés.


    Actualización 3: Intenté todo en una PC de WAMP. Los mismos resultados del navegador (más algunos errores "desaprobados", algo que ver con PHP 4 vs. 5). Creo que puedo depurar en esa PC (si Xdebug está funcionando), pero parece poco punto.

¿Fue útil?

Solución

¿Pasó el nombre de básico_test_v.php a basic_test_view.php? El código espera que sus archivos sean nombrados y almacenados a la derecha.

Actualizar 1 (sí estoy aburrido)

Ya he jimmied una línea de código porque me hace pasar un código 404 Página no encontrada. Parecía el depurador Obtener estaba causando que el validador falle. Así que agregué un criterio, en mi ignorante. camino (estoy seguro de que debería ser manejado Excepción o algo):

if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START') {   ...  }

¿Cómo puedo resolver esto? Por cierto, esto se intenta resolver mi Otra publicación, que voy a actualizar; Parecía mejor hacer esto un discreto. pregunta.

La solución "correcta" a este problema es: Establecer $config['uri_protocol'] = "AUTO"; en $config['uri_protocol'] = "PATH_INFO"; y $config['enable_query_strings'] = FALSE; a $config['enable_query_strings'] = TRUE; en la configuración config.php (lea el comentario por encima de esas configuraciones, son muy útiles)

Después de una mirada más profunda en Test.php, puedo decirle que sus archivos de prueba deben llamarse así:

% NAME% _% Type% _test.php (donde% Type% es singular)

Para que sea más claro aquí un ejemplo:

Tenemos un controlador Bienvenido colocado en el archivo Bienvenido.PHP La prueba de este controlador debe ser nombrada welcome_controller _test.php y almacenado en pruebas / controladores /

El script Test.php intenta cargar el archivo de prueba y el archivo probado automáticamente. Pero en mi opinión debe ser corregido.

He cambiado la función get_loader_id y add_test como Sigue

function get_loader_id($file, $type) {
   $loader_id = str_replace("_{$type}_test.php", "", basename($file));
   return $loader_id;
}
function add_test($file, &$test) {
   $implementation = '';
   if (preg_match('/_controller/', $file)) {
      $controller = get_loader_id($file, 'controller');
      $implementation = APPLICATION . 'controllers/' . $controller . '.php';
   } elseif (preg_match('/_model/', $file)) {
      $model = get_loader_id($file, 'model');
      $implementation = APPLICATION . 'models/' . $model . '_model.php';
   } elseif (preg_match('/_view/', $file)) {
      $view = get_loader_id($file, 'view');
      $implementation = APPLICATION . 'views/' . $view . '.php';
   } elseif (preg_match('/_helper/', $file)) {
      $helper = get_loader_id($file, 'helper');
      $implementation = APPLICATION . 'helpers/' . $helper . '.php';
   } elseif (preg_match('/_library/', $file)) {
      $library = get_loader_id($file, 'library');
      $implementation = APPLICATION . 'libraries/' . $library . '.php';
   }
   if (file_exists($implementation)) {
      require_once ($implementation);
   }
   $test->addFile($file);
}

Si está siguiendo las convenciones de nombre de archivo, todos deben ejecutarse bien (Lo he probado en un MacBook con Zend Server CE, XDEBUG, SIMPLETEST y NETBEANS 6.9)

Otros consejos

Si lo que está intentando cargar es una vista, ¿ha intentado usar $this->load->view('basic_test_view');?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top