summaryrefslogtreecommitdiffstats
path: root/docs/reference/matchers.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/reference/matchers.md')
-rw-r--r--docs/reference/matchers.md27
1 files changed, 27 insertions, 0 deletions
diff --git a/docs/reference/matchers.md b/docs/reference/matchers.md
index 8ff9e0b..8b3d140 100644
--- a/docs/reference/matchers.md
+++ b/docs/reference/matchers.md
@@ -111,6 +111,33 @@ use the regular expression syntax defined
[here](../advanced.md#regular-expression-syntax). All of these matchers, except
`ContainsRegex()` and `MatchesRegex()` work for wide strings as well.
+## Exception Matchers
+
+| Matcher | Description |
+| :---------------------------------------- | :------------------------------- |
+| `Throws<E>()` | The `argument` is a callable object that, when called, throws an exception of the expected type `E`. |
+| `Throws<E>(m)` | The `argument` is a callable object that, when called, throws an exception of type `E` that satisfies the matcher `m`. |
+| `ThrowsMessage<E>(m)` | The `argument` is a callable object that, when called, throws an exception of type `E` with a message that satisfies the matcher `m`. |
+
+Examples:
+
+```cpp
+auto argument = [] { throw std::runtime_error("error msg"); };
+
+// Checks if the lambda throws a `std::runtime_error`.
+EXPECT_THAT(argument, Throws<std::runtime_error>());
+
+// Checks if the lambda throws a `std::runtime_error` with a specific message
+// that matches "error msg".
+EXPECT_THAT(argument,
+ Throws<std::runtime_error>(Property(&std::runtime_error::what,
+ Eq("error msg"))));
+
+// Checks if the lambda throws a `std::runtime_error` with a message that
+// contains "msg".
+EXPECT_THAT(argument, ThrowsMessage<std::runtime_error>(HasSubstr("msg")));
+```
+
## Container Matchers
Most STL-style containers support `==`, so you can use `Eq(expected_container)`