This can be used to match three kinds of objects:
A Function that throws an exception when called. The function cannot take any arguments. If you want to test that a function expecting arguments throws, wrap it in another zero-argument function that calls the one you want to test.
A Future that completes with an exception. Note that this creates an asynchronous expectation. The call to
expect()that includes this will return immediately and execution will continue. Later, when the future completes, the actual expectation will run.
In all three cases, when an exception is thrown, this will test that the
exception object matches
matcher is not an instance of
Matcher, it will implicitly be treated as
Matcher throwsA(matcher) => Throws(wrapMatcher(matcher));