mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-16 10:42:25 +01:00
Update docs for REQUIRE_THROWS_MATCHES
This commit is contained in:
parent
85b7f3d6ab
commit
a40dd478f3
@ -210,15 +210,36 @@ The other miscellaneous matcher utility is exception matching.
|
|||||||
|
|
||||||
#### Matching exceptions
|
#### Matching exceptions
|
||||||
|
|
||||||
Catch2 provides a utility macro for asserting that an expression
|
Because exceptions are a bit special, Catch2 has a separate macro for them.
|
||||||
throws exception of specific type, and that the exception has desired
|
|
||||||
properties. The macro is `REQUIRE_THROWS_MATCHES(expr, ExceptionType, Matcher)`.
|
|
||||||
|
The basic form is
|
||||||
|
|
||||||
|
```
|
||||||
|
REQUIRE_THROWS_MATCHES(expr, ExceptionType, Matcher)
|
||||||
|
```
|
||||||
|
|
||||||
|
and it checks that the `expr` throws an exception, that exception is derived
|
||||||
|
from the `ExceptionType` type, and then `Matcher::match` is called on
|
||||||
|
the caught exception.
|
||||||
|
|
||||||
> `REQUIRE_THROWS_MATCHES` macro lives in `catch2/matchers/catch_matchers.hpp`
|
> `REQUIRE_THROWS_MATCHES` macro lives in `catch2/matchers/catch_matchers.hpp`
|
||||||
|
|
||||||
|
For one-off checks you can use the `Predicate` matcher above, e.g.
|
||||||
|
|
||||||
Catch2 currently provides two matchers for exceptions.
|
```cpp
|
||||||
These are:
|
REQUIRE_THROWS_MATCHES(parse(...),
|
||||||
|
parse_error,
|
||||||
|
Predicate<parse_error>([] (parse_error const& err) -> bool { return err.line() == 1; })
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
but if you intend to thoroughly test your error reporting, I recommend
|
||||||
|
defining a specialized matcher.
|
||||||
|
|
||||||
|
|
||||||
|
Catch2 also provides 2 built-in matchers for checking the error message
|
||||||
|
inside an exception (it must be derived from `std::exception`):
|
||||||
* `Message(std::string message)`.
|
* `Message(std::string message)`.
|
||||||
* `MessageMatches(Matcher matcher)`.
|
* `MessageMatches(Matcher matcher)`.
|
||||||
|
|
||||||
@ -236,10 +257,7 @@ REQUIRE_THROWS_MATCHES(throwsDerivedException(), DerivedException, Message("De
|
|||||||
REQUIRE_THROWS_MATCHES(throwsDerivedException(), DerivedException, MessageMatches(StartsWith("DerivedException")));
|
REQUIRE_THROWS_MATCHES(throwsDerivedException(), DerivedException, MessageMatches(StartsWith("DerivedException")));
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that `DerivedException` in the example above has to derive from
|
> the exception message matchers live in `catch2/matchers/catch_matchers_exception.hpp`
|
||||||
`std::exception` for the example to work.
|
|
||||||
|
|
||||||
> the exception message matcher lives in `catch2/matchers/catch_matchers_exception.hpp`
|
|
||||||
|
|
||||||
|
|
||||||
### Generic range Matchers
|
### Generic range Matchers
|
||||||
|
Loading…
Reference in New Issue
Block a user