Domanda

Al momento sto refactoring una suite di test costruito da un collega e vorrei utilizzare Test::Class[::Most] mentre farlo. Come ho iniziato ho capito che potrei davvero utilizzare un paio di ruoli Moose in codice disaccoppiare un po '. Tuttavia, sembra che non è del tutto possibile - Ricevo messaggi di errore come questo:

Prototype mismatch: sub My::Test::Class::Base::blessed: none vs ($) at
/usr/lib/perl5/vendor_perl/5.8.8/Sub/Exporter.pm line 896

Quindi la domanda è:? Posso usare Moose insieme Test::Class e se sì, come

PS: Il codice va in questo modo:

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

with 'My::Cool::Role';

has attr => ( ... );
È stato utile?

Soluzione

Test :: profonda (caricata tramite Test :: La maggior parte tramite Test :: :: Classe Most) sta esportando il proprio blessed insieme a un sacco di altre cose che probabilmente non dovrebbe essere. La sua non è documentato. Moose è anche esportando il Scalar::Util::blessed più comune. Dal momento che Scalar::Util::blessed è abbastanza comune, Test :: profonda non deve essere esportando il proprio blessed diversa.

Purtroppo, non c'è buon modo per fermarlo. Io suggerirei a mio :: Test :: :: Base Class nel seguente modo trucco:

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;

e segnalato il problema a Test :: profonda e test :: La maggior parte .

Altri suggerimenti

È possibile schiacciare le esportazioni particolare attraverso (per esempio):

use Test::Deep '!blessed';

Ho appena rilasciato una versione aggiornata di Test :: Most. Se si installa 0.30, questo problema va via.

La gente che trovano questa pagina potrebbe anche essere interessato a conoscere i vari Test :: Class-Moose mashup moduli:

Con uno qualsiasi di questi una certa quantità di refactoring avrebbe required-- la sintassi varia. Tuttavia, con una certa quantità di ritrovamento e sostituzione si può essere in grado di effettuare una transizione abbastanza veloce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top