Testing Strict attributes
examples/Moose/employee02/t/01-name.t
use strict; use warnings; use v5.10; use Test::More tests => 12+2+2; use Test::Exception; use Employee; my $e = Employee->new; isa_ok($e, 'Employee'); is($e->name('Foo'), 'Foo', 'setter'); is($e->name, 'Foo', 'getter'); is($e->sex('m'), 'm', 'set m'); is($e->sex, 'm', 'get m'); is($e->sex('f'), 'f', 'set f'); is($e->sex, 'f', 'get f'); is($e->sex('M'), 'm', 'set M'); is($e->sex, 'm', 'get m'); is($e->sex('male'), 'm', 'set male'); is($e->sex, 'm', 'get m'); throws_ok { $e->sex('other') } qr{Attribute \(sex\) does not pass the type constraint because:}, 'sex is f or m'; is($e->employer('Acme Corporation'), 'Acme Corporation', 'set employer'); is($e->employer, 'Acme Corporation', 'get employer'); use Person; throws_ok { Person->new(employee => 'Acme Corp') } qr{Found unknown attribute}, 'MooseX::StrictConstructor'; #isa_ok($p, 'Person'); #throws_ok { $p->employee } # qr{Can't locate object method "employee" via package "Person"}, # 'no employee method'; throws_ok { Employee->new(employee => 'Acme Corp') } qr{Found unknown attribute}, 'MooseX::StrictConstructor';