Как я могу использовать лось с тестом :: Class?

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

  •  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 И если так, как?

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

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

with 'My::Cool::Role';

has attr => ( ... );
Это было полезно?

Решение

Тест :: Глубоко (загружено через тест :: Большинство через тест :: Класс :: Большинство) экспортирует свой собственный blessed Наряду с большим количеством других вещей, вероятно, не должно быть. Это не документировано. Лось также экспортирует более распространенные Scalar::Util::blessed. Отказ С Scalar::Util::blessed довольно распространен, тест :: глубоко не следует экспортировать свой по-разному blessed.

К сожалению, нет хорошего способа остановить это. Я бы предложил в моем :: 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;

и сообщая о проблеме Тест :: Глубоко а также Тест :: больше всего.

Другие советы

Вы можете раздавить особый экспорт через (например):

use Test::Deep '!blessed';

Я только что выпустил обновленную версию теста :: большинству. Если вы устанавливаете 0,30, эта проблема уходит.

Люди, находящиеся на этой странице, могут также быть заинтересованы узнать о различных тестах :: MaShup Mashup MaShup классы:

С любым из этих некоторого количества рефакторинга потребуется - синтаксис варьируется. Однако с некоторым количеством находки и замены вы можете сделать довольно быстрое переход.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top