NAME
Test::YAFT::Test::Exception - Test::YAFT - Test::Exception comparison
DESCRIPTION
Test::YAFT doesn't provide dedicated asserts like Test::Exception.
Instead it uses it
and got { }
block to achieve same result.
dies_ok
Behaviour of dies_ok
is achieved by expecting any exception
# Test::Exception
dies_ok { $foo->method } "should die";
# Test::YAFT
it "should die"
=> got { $foo->method }
=> throws => ignore
;
lives_ok
Behaviour of lives_ok
is achieved by expecting anything
# Test::Exception
lives_ok { $foo->method } "should not die";
# Test::YAFT
it "should not die"
=> got { $foo->method }
=> expect => ignore
;
lives_and
Behaviour of lives_and
implicit behaviour when got { }
block is used.
# Test::Exception
lives_and { is $foo->method, 42 } "should not die and result is 42";
# Test::YAFT
it "should not die and result is 42"
=> got { $foo->method }
=> expect => 42
;
throws_ok
Behaviour of throws_ok
is achieved by providing exception expectations. Unline Test::Exception this library uses Test::Deep base expectations so instead of REGEX
and CLASS
one have to use expect_re
and expect_obj_isa
Stringy exceptions
# Test::Exception
throws_ok { $foo->method } qr/division by zero/, "should test string exception";
# Test::YAFT
it "should test string exception"
=> got { $foo->method }
=> throws => expect_re (qr/division by zero/)
;
OOP exceptions
# Test::Exception
throws_ok { $foo->method } My::X::Division::By::Zero::, "should test OOP exception";
# Test::YAFT
it "should test OOP exception"
=> got { $foo->method }
=> throws =>
& expect_obj_isa (My::X::Division::By::Zero::)
& expect_methods (http_status => HTTP::Status::BAD_REQUEST)
& expect_methods (json_content => +{ error => ignore })
;
AUTHOR
Branislav Zahradník <barney@cpan.org>
COPYRIGHT AND LICENCE
This file is part of Test::YAFT distribution.