{ package MooX::Types::MooseLike::Test; use strict; use warnings FATAL => 'all'; use Moo; use MooX::Types::MooseLike::Base qw/ Int /; use MooX::Types::SetObject qw/ SetObject /; has set_object_of_ints => ( is => 'ro', isa => SetObject[Int], ); } package main; use strict; use warnings FATAL => 'all'; use Test::More; use Test::Fatal; BEGIN { eval { require Set::Object }; plan skip_all => 'SetObject tests need Set::Object' if $@; } # Set::Object ok( MooX::Types::MooseLike::Test->new( set_object_of_ints => Set::Object->new(1, 2, 3), ), 'Set::Object of integers' ); like( exception { MooX::Types::MooseLike::Test->new( set_object_of_ints => Set::Object->new('fREW'),); }, qr(fREW is not an integer), 'Int eror mesage is triggered when validation fails' ); done_testing;