public async Task HandlersTest() { var configureHeaderCalled = false; var configureParameterCalled = false; var parseFailureResultCalled = false; var parseSuccessResultCalled = false; var expectedParameter = new object(); var expectedParameterBag = new StubParameterBag(); var expectedHeaderBag = new StubHeaderBag(); var expectedStatusCode = HttpStatusCode.OK; var expectedRequestResult = new StubRequestResult(); var expectedSuccessResult = new object(); var expectedFailureResult = new object(); var request = new DelegateRequest <object, object, object>(HttpMethod.Post, string.Empty) { ConfigureHeaderAsyncHandler = (headerBag, parameter) => { Assert.AreEqual(expectedHeaderBag, headerBag); Assert.AreEqual(expectedParameter, parameter); configureHeaderCalled = true; return(Task.FromResult(0)); }, ConfigureParameterAsyncHandler = (parameterBag, parameter) => { Assert.AreEqual(expectedParameterBag, parameterBag); Assert.AreEqual(expectedParameter, parameter); configureParameterCalled = true; return(Task.FromResult(0)); }, ParseSuccessResultAsyncHandler = (statusCode, requestResult) => { Assert.AreEqual(expectedStatusCode, statusCode); Assert.AreEqual(expectedRequestResult, requestResult); parseSuccessResultCalled = true; return(Task.FromResult <object>(expectedSuccessResult)); }, ParseFailureResultAsyncHandler = (statusCode, requestResult) => { Assert.AreEqual(expectedStatusCode, statusCode); Assert.AreEqual(expectedRequestResult, requestResult); parseFailureResultCalled = true; return(Task.FromResult <object>(expectedFailureResult)); }, }; await request.ConfigureHeaderAsync(expectedHeaderBag, expectedParameter); await request.ConfigureParameterAsync(expectedParameterBag, expectedParameter); var successResult = await request.ParseSuccessResultAsync(expectedStatusCode, expectedRequestResult); var failureResult = await request.ParseFailureResultAsync(expectedStatusCode, expectedRequestResult); Assert.IsTrue(configureHeaderCalled); Assert.IsTrue(configureParameterCalled); Assert.IsTrue(parseSuccessResultCalled); Assert.IsTrue(parseFailureResultCalled); Assert.AreEqual(expectedSuccessResult, successResult); Assert.AreEqual(expectedFailureResult, failureResult); }