因此尝试升级其他人编写的一些旧测试模块以支持更新的 perls。一些测试正在使用 Test::MockObject::Extends,但我发现运行以下代码错误。
#!/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.
我查看了 Test::MockObject 和 perl 5.10 的更改日志,但看不到任何直接看起来会导致此问题的东西。我怀疑它已经坏了一段时间,而 5.10 的一些新东西刚刚照亮了它。