Сообщение карпа из неправильного места с помощью @CARP_NOT (Moose и Method Modifiers)

Это дополнительный вопрос к предупреждениям:warnif("устарел"…) с карпом?,

вот фрагмент моего кода от Business::CyberSource на Github

примечание: предыдущий ответ (в предыдущем вопросе) и добавление @CARP_NOT продемонстрировали, что warnings::warnif использования carp, Я попытался заменить карпа напрямую, поведение было точно таким же.

our @CARP_NOT = ( __PACKAGE__, qw( Class::MOP::Method::Wrapped ) );

around BUILDARGS => sub {
  my $orig  = shift;
  my $class = shift;

  my $args = $class->$orig( @_ );

  if ( exists $args->{username} ) {
    warnings::warnif('deprecated',
        '`username` is deprecated, use `user` instead'
    );

Но когда я называю этот код

use strict;
use warnings;
use Test::More;

use Business::CyberSource::Client;
my $class = 'Business::CyberSource::Client';

my $client
= new_ok( $class => [{
    username   => $ENV{PERL_BUSINESS_CYBERSOURCE_USERNAME} || 'test',
    password   => $ENV{PERL_BUSINESS_CYBERSOURCE_PASSWORD} || 'test',
    production => 0,
}]);

Ошибка все еще сообщается из неправильного места (хотя, по крайней мере, не из Class::MOP::Method::Wrapped)

t/new-client.t .. `username` is deprecated, use `user` instead at constructor Business::CyberSource::Client::new (defined at /home/xenoterracide/Documents/Business-CyberSource/lib/Business/CyberSource/Client.pm line 314) line 6.

Как я могу сделать этот отчет из правильного номера строки в тестовом файле? (примечание: поведение не изменилось, если бы я позвонил ->new непосредственно вместо использования new_ok

0 ответов

Другие вопросы по тегам