Faking async methods
The faking of async
methods is fully supported in FakeItEasy.
A call to a non-configured async method on a fake will return a
Dummy Task
or Task<T>
, just
as if it were any other method that returns a Task
or Task<T>
. For
example:
var foo = A.Fake<Foo>();
var bar = await foo.Bar(); // will return immediately and return string.Empty
Of course, you can still configure calls to async
methods as you would normally:
There are also convenience overloads of Returns
and ReturnsLazily
that let you specify a value rather
than a task, and configure the method to return a completed task whose result is the specified value:
These overloads of Returns
and ReturnsLazily
also exist for ValueTask<T>
. If your test project
targets a framework compatible with .NET Standard 2.1 or higher, they're built into FakeItEasy itself;
otherwise, they're in a separate package:
FakeItEasy.Extensions.ValueTask
.
Throwing exceptions
To configure an async method to throw an exception, see Throwing exceptions from an async method.