Как может я использовать Американского лося с Тестом:: Класс?

Я в настоящее время осуществляю рефакторинг набор тестов, созданный коллегой, и хотел бы использовать 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 и если так, как?

PS: код идет как это:

package My::Test::Class::Base;
use Moose;
use Test::Class::Most;

with 'My::Cool::Role';

has attr => ( ... );
8
задан Nikolai Prokoschenko 14 May 2010 в 17:45
поделиться

1 ответ

Test :: Deep (загружается через Test :: Most через Test :: Class :: Most) экспортирует свой собственный blessed вместе с множеством других вещей, которых, вероятно, быть не должно. Это не задокументировано. Moose также экспортирует более распространенный Scalar :: Util :: blessed . Поскольку Scalar :: Util :: blessed довольно распространен, Test :: Deep не должен экспортировать свой собственный другой blessed .

К сожалению, нет хорошего способа остановить это. Я бы предложил в My :: Test :: Class :: Base выполнить следующий прием:

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;

и сообщить о проблеме в Test :: Deep и Test :: Most .

12
ответ дан 5 December 2019 в 07:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: