use Test::More;
use Test::Fatal;
+my $isa_called = 0;
{
package FooISA;
use Moo;
- my $isa = sub { die "I want to die" unless $_[0] eq 'live' };
+ my $isa = sub {
+ $isa_called++;
+ die "I want to die" unless $_[0] eq 'live';
+ };
has a_lazy_attr => (
is => 'ro',
ok my $lives = FooISA->new(a_lazy_attr=>'live', non_lazy=>'live'),
'expect to live when both attrs are set to live in init';
+my $called_pre = $isa_called;
+$lives->a_lazy_attr;
+is $called_pre, $isa_called, 'isa is not called on access when value already exists';
+
like(
exception { FooISA->new(a_lazy_attr=>'live', non_lazy=>'die') },
qr/I want to die/,