كيف يمكنني استخدام موس مع اختبار :: الفصل؟
-
26-09-2019 - |
سؤال
أقوم حاليًا بإعادة تمثيل جناح اختبار تم بناؤه من قبل زميل وأرغب في استخدامه Test::Class[::Most]
أثناء القيام بذلك. عندما بدأت ، اكتشفت أنه يمكنني استخدام اثنين من Moose
أدوار لفصل الرمز قليلاً. ومع ذلك ، يبدو أنه ليس من الممكن تمامًا - أحصل على رسائل خطأ مثل هذه:
Prototype mismatch: sub My::Test::Class::Base::blessed: none vs ($) at
/usr/lib/perl5/vendor_perl/5.8.8/Sub/Exporter.pm line 896
لذا فإن السؤال هو: هل يمكنني استخدام Moose
معا مع Test::Class
وإذا كان الأمر كذلك ، كيف؟
ملاحظة: الرمز يسير على هذا النحو:
package My::Test::Class::Base;
use Moose;
use Test::Class::Most;
with 'My::Cool::Role';
has attr => ( ... );
المحلول
Test :: Deep (تم تحميله عبر Test :: Most Via Test :: Class :: Most) يتم تصديره blessed
جنبا إلى جنب مع الكثير من الأشياء الأخرى ربما لا ينبغي أن يكون. لم يتم توثيقه. يتم تصدير موس أيضًا أكثر شيوعًا Scalar::Util::blessed
. حيث Scalar::Util::blessed
شائع إلى حد ما ، الاختبار :: العميق يجب ألا يتم تصديره بشكل مختلف blessed
.
لسوء الحظ ، لا توجد طريقة جيدة لإيقافها. أود أن أقترح في بلدي :: اختبار :: الفصل :: قاعدة القيام بالاختراق التالي:
package My::Test::Class::Base;
# Test::Class::Most exports Test::Most exports Test::Deep which exports
# an undocumented blessed() which clashes with Moose's blessed().
BEGIN {
require Test::Deep;
@Test::Deep::EXPORT = grep { $_ ne 'blessed' } @Test::Deep::EXPORT;
}
use Moose;
use Test::Class::Most;
والإبلاغ عن المشكلة اختبار :: عميق و اختبار :: معظم.
نصائح أخرى
يمكنك سحق صادرات معينة عبر (على سبيل المثال):
use Test::Deep '!blessed';
لقد أصدرت للتو نسخة محدثة من Test :: Most. إذا قمت بتثبيت 0.30 ، فإن هذه المشكلة تختفي.
قد يكون الأشخاص الذين يجدون هذه الصفحة مهتمين أيضًا بمعرفة اختبارات الاختبار المختلفة :: Class-moose mashup:
- اختبار :: قادر
- اختبار :: حلو
- اختبار :: الفصل :: موس (ليس بعد على CPAN)
مع أي من هذه القدر من إعادة البناء سوف مطلوب- يختلف بناء الجملة. ومع ذلك ، مع قدر من الاكتشاف والاستبدال ، قد تكون قادرًا على إجراء انتقال سريع إلى حد ما.