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