因此試圖升級一些由其他人編寫的舊測試模塊來支持較新的perls。一些測試使用Test :: MockObject :: Extends,但是我發現運行下面的代碼錯誤。Test :: MockObject ::用'fields'擴展給出錯誤
#!/usr/bin/env perl
package MyModule;
use strict;
use warnings;
use fields qw(field1 field2);
sub new {
my $self = shift;
unless (ref $self) {
$self = fields::new($self);
}
return $self;
}
package main;
use strict;
use warnings;
use Test::MockObject::Extends;
use Data::Dumper;
my $VAR1 = MyModule->new();
print Data::Dumper::Dumper($VAR1);
my $VAR2 = Test::MockObject::Extends->new($VAR1);
錯誤:
$ perl a
$VAR1 = bless({}, 'MyModule');
Modification of a read-only value attempted at /usr/local/share/perl/5.14.2/Test/MockObject/Extends.pm line 31.
我已經看過了變更記錄,測試:: MockObject和Perl 5.10,不能看到任何直接看起來像它會導致此。我懷疑它已經被打破了一段時間,而5.10的新內容恰恰照亮了它。