SimpleTest مع CodeIgniter — لا تحديد ملف — المتغيرات يموت ؟

StackOverflow https://stackoverflow.com/questions/3327832

سؤال

وأنا أحاول أن استخدام SimpleTest مع CodeIgniter, باستخدام التعليمات البرمجية التي قدمتها maroonbytes.أنا باستخدام مصباح NetBeans 6.9.

على test.php تحميل الصفحة في المتصفح الخاص بي.لدي كعب اختبار في مكان ويظهر في القائمة المنسدلة التحديدات.عندما أحاول تشغيله ، أحصل على 2 PHP errors:

الرسالة:include_once(/var/www/sparts3/main/tests/basic_test_v.php):فشل في فتح الدفق:لا يوجد مثل هذا الملف أو الدليل

الرسالة:include_once():فشل في فتح '/var/www/sparts3/main/tests/basic_test_v.php' لإدراجها (include_path='.:/usr/share/php:/usr/share/الكمثرى')

المسار هو الخطأ - basic_test_v.php هو في مجلد فرعي /اختبارات/آراء.

المصحح يشير إلى هذا في test.php:

function add_test($file, &$test)

لسبب NetBeans لا تعرض قيمتها الملف في هذه المرحلة.هل هذا يعني انها فارغة ؟

لقد كسروا سطر من التعليمات البرمجية لأنه يحصل لي في الماضي رمز 404 صفحة لم يتم العثور على.يبدو المصحح على كان يسبب المصادقة بالفشل.لذلك أضفت المعايير في يجهل طريقة (أنا متأكد من أنها يجب أن تكون معالجة استثناء أو شيء):

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

كيف يمكنني حل هذا ؟ راجع للشغل, هذا هو حاول حل بلدي وظيفة أخرى, سوف التحديث ؛ يبدو من الأفضل أن تجعل هذا منفصلة السؤال.


تحديث 1: لقد تم استخدام مطور ويب إضافة-في (فايرفوكس) تجربة مع نشر الإدخالات.وأعتقد أن هذه هي التي أسيء التعامل في المدونة.فإنه لا يزال يظهر NetBeans هو ماضيتان في عرض بعض متغيرات السلسلة في حين التصحيح ؛ هذا أمر محبط.

تحديث 2: يبدو لي أن رمز صالح تجهيز يتوقف عند نفس النقطة NetBeans توقف عرض المتغيرات.أنا التنقل خلال test.php.أنا اقعة في المنتصف من خلال وظيفة ، add_test($file, &$test).هذه الوظائف يفتح مع إن البيان ؛ أن ينتهي حسنا, أستطيع أن أرى المتغيرات.ثم إذا كان البيان:

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

في أقرب وقت أنا في هذا الخط ، 2 الأمور:

  1. المتغيرات عرض في NetBeans فارغة باستثناء SuperGlobals
  2. رمز يتصرف كما لو $التنفيذ فارغة متغير

لقد أضاف البيان فقط فوق هذه الخطوط:

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

هذا لا يغير أي شيء.المتصفح الناتج هو نفسه إذا أنا باستخدام NetBeans/Xdebug أو لا.

حتى انها بدأت تبدو مثل PHP معالجة خلل.هل هؤلاء موجودون ؟ قد حاول تحميل ومحاولة من خدمة استضافة-على التشخيص القرائن فقط ، cheerlessly لأن CI دون القدرة على التصحيح هو من لا مصلحة لي.


تحديث 3: لقد حاولت كل شيء على المزج الكمبيوتر.نفس المتصفح النتائج (بالإضافة إلى بعض "إهمال" الأخطاء ، أن تفعل شيئا مع PHP 4 مقابل5).أعتقد أنني يمكن التصحيح على جهاز الكمبيوتر (إذا Xdebug هو عمل), ولكن يبدو أن هناك نقطة صغيرة.

هل كانت مفيدة؟

المحلول

هل تسمية basic_test_v.php إلى basic_test_view.php?رمز تتوقع الملفات الخاصة بك إلى الكشف عن اسمه وتخزينها الحق.

تحديث 1 (نعم ايم بالملل)

لقد كسروا سطر من التعليمات البرمجية لأنه يحصل لي في الماضي رمز 404 لم يتم العثور على الصفحة.يبدو المصحح على كان يسبب المصادقة بالفشل.لذلك أضفت المعايير في جاهل طريقة (أنا متأكد من أنه ينبغي أن يكون التعامل معها استثناء أو شيء):

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

كيف يمكنني حل هذا ؟ راجع للشغل, هذا هو حاول حل وظيفة أخرى ، والتي سوف التحديث ؛ يبدو من الأفضل أن تجعل هذا منفصلة السؤال.

"الحق" حل هذه المسألة هو:مجموعة $config['uri_protocol'] = "AUTO"; إلى $config['uri_protocol'] = "PATH_INFO"; و $config['enable_query_strings'] = FALSE; إلى $config['enable_query_strings'] = TRUE; في config.php (قراءة التعليق أعلاه هذه الإعدادات ، فإنها مفيدة جدا)

بعد نظرة أعمق في test.php أستطيع أن أقول لكم أن الاختبار يجب أن تكون الملفات يدعى مثل هذا:

%name%_%type%_test.php (أين %النوع% هو المفرد)

لجعل الأمر أكثر وضوحا هنا مثال:

لدينا تحكم نرحب وضعها في الملف welcome.php اختبار لهذا يجب أن تكون تسمية وحدة تحكم welcome_controller_test.php وتخزينها تحت الاختبارات/تحكم/

على test.php السيناريو يحاول تحميل ملف اختبار و اختبار الملف تلقائيا.ولكن في رأيي أنه يحتاج إلى تصحيح.

لقد تغيرت وظيفة get_loader_id و add_test كما يلي

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);
}

إذا كنت في أعقاب اسم الملف الاتفاقيات كل شيء يجب أن تعمل على ما يرام (لقد اختبرت ذلك على ماك بوك مع زند server ce ، xdebug, simpletest و netbeans 6.9)

نصائح أخرى

إذا ما كنت تحاول تحميل نسخة, وقد حاولت استخدام $this->load->view('basic_test_view'); ?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top