{
has
'foo'
=> (
is
=>
'ro'
,
isa
=>
'Str'
,
traits
=> [
'String'
],
handles
=> {
replace
=>
'replace'
},
required
=> 1
);
}
my
$foo_obj
= Foo->new(
foo
=>
'hello'
);
{
my
$arg
= [123];
my
$exception
= exception {
$foo_obj
->replace(
$arg
);
};
like(
$exception
,
qr/The first argument passed to replace must be a string or regexp reference/
,
"an Array ref passed to replace"
);
isa_ok(
$exception
,
'Moose::Exception::InvalidArgumentToMethod'
,
"an Array ref passed to replace"
);
is(
$exception
->argument,
$arg
,
"an Array ref passed to replace"
);
is(
$exception
->ordinal,
"first"
,
"an Array ref passed to replace"
);
is(
$exception
->type_of_argument,
"string or regexp reference"
,
"an Array ref passed to replace"
);
is(
$exception
->method_name,
"replace"
,
"an Array ref passed to replace"
);
is(
$exception
->type,
"Str|RegexpRef"
,
"an Array ref passed to replace"
);
}
{
my
$arg
= [123];
my
$exception
= exception {
$foo_obj
->replace(
'h'
,
$arg
);
};
like(
$exception
,
qr/The second argument passed to replace must be a string or code reference/
,
"an Array ref passed to replace"
);
isa_ok(
$exception
,
'Moose::Exception::InvalidArgumentToMethod'
,
"an Array ref passed to replace"
);
is(
$exception
->argument,
$arg
,
"an Array ref passed to replace"
);
is(
$exception
->ordinal,
"second"
,
"an Array ref passed to replace"
);
is(
$exception
->type_of_argument,
"string or code reference"
,
"an Array ref passed to replace"
);
is(
$exception
->method_name,
"replace"
,
"an Array ref passed to replace"
);
is(
$exception
->type,
"Str|CodeRef"
,
"an Array ref passed to replace"
);
}
done_testing;