سؤال

لذلك قمت بإعداد الاختبار في تطبيق ZF 1.9.5 بفضل هذا البرنامج التعليمي, ، أنا قادر على اختبار وحدات التحكم الخاصة بي ، والآن أريد إنشاء اختبار لنموذج. ومع ذلك ، أواجه مشكلة في أن Phpunit لا يجد النموذج الخاص بي.

Fatal error: Class 'Default_Form_AccountProfile' not found

أنا أمتد PHPUnit_Framework_TestCase بدلاً من Zend_Test_PHPUnit_ControllerTestCase لأنه ليس وحدة تحكم. غير أن الشيء الصحيح الذي ينبغي عمله؟ ها هو اختباري:

<?php

class AccountProfileTest extends PHPUnit_Framework_TestCase
{
    public function testPopulate()
    {
        $form = new Default_Form_AccountProfile();
        $user = array(
            'firstName' => 'Joe',
            'lastName' => 'Schmoe'
        );
        $form->populate($user);
        $this->assertEquals($form->getElement('firstName')->getValue(), 'Joe');
        $this->assertEquals($form->getElement('lastName')->getValue(), 'Schmoe');
    }
}

ما الخطأ الذي افعله؟ ما هي الطريقة الصحيحة لاختبار نموذج في إطار Zend؟

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

المحلول

إن أبسط حل لمشكلتك هو "طلب" ملف PHP حيث يقع النموذج الخاص بك في بداية هذا الملف (أو قبل استدعاء Default_Form الجديد ...).

راجع للشغل ، هل هناك سبب محدد لماذا تختبر السلوك الافتراضي لـ Zend_Form؟ اختبارات Zend_Form مكتوبة بالفعل ويمكنك الحصول عليها إذا قمت بتنزيل النسخة الكاملة من ZF. إذا كان النموذج الذي تستخدمه يحتوي على أساليب محددة ، أو يتم الكتابة فوق بعض أساليب Zend_Forms مما يجعل من المنطقي اختبارها.

نصائح أخرى

إذا نظرت إلى التطبيق الخاص بك. ini ، انظر إلى السطر يوضح "AppNamesPace" الذي يضعف "التطبيق" إذا كنت تستخدم Zend_Tool لإنشاء هيكل Zend Framework الخاص بك.

من أجل منع حدوث هذا الخطأ ، يمكنك إما تغيير هذا الإعداد إلى "افتراضي" أو تقوم بإعادة تسمية جميع فئات Default_* إلى Application_* (في هذه الحالة بالذات ، يعني أنك تعيد تسمية "Default_Form_AccountProfile" إلى "application_form_ascountprofile").

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