Configure the response
Various properties of the stub response can be customized.
Response body
If we're using the Get
, Post
, Put
and Delete
methods, the response body can be specified with the delegate passed as the second argument.
stub.Get("/testget", (req, args) => "testresponse");
It can also be specified by calling the Response
method.
stub.Request(HttpMethod.Get)
.IfRoute("/testget")
.Response((req, args) => "testresponse");
Return type
The CreateStubResponse
delegate must return a string, which will be directly written to the response body.
Request arguments
Arguments of the request are accessible through the RequestArguments
object passed to the delegate.
stub.Get(
"/testget/{arg1}/part/{arg2}",
(req, args) => $"testresponse arg1: {args.Route.arg1} arg2: {args.Route.arg2} qarg1: {args.Query.qarg1} qarg2: {args.Query.qarg2}");
stub.Start();
var result = await httpClient.GetAsync(
new UriBuilder(new Uri(stub.Address)) { Path = "/testget/orange/part/apple", Query = "?qarg1=melon&qarg2=pear" }.Uri);
// The resultString will be "testresponse arg1: orange arg2: apple qarg1: melon qarg2: pear".
var resultString = await result.Content.ReadAsStringAsync();
Status code
The status code of the response can be specified with the StatusCode
method.
stub.Get("/testget", (req, args) => "testresponse")
.StatusCode(StatusCodes.Status206PartialContent);
Headers
Headers of the response can be specified with the Header
method.
stub.Get("/testget", (req, args) => "testresponse")
.Header("Header1", "HeaderValue1")
.Header("Header2", "HeaderValue2");