public async Task Executes_OnException_WhenParsingFails_WithCorrectContext( Exception exception, HttpRequestMessage request, [Frozen] IJSendParser parser, [Frozen] MessageInterceptor interceptor, [Greedy, MockHttpClient] JSendClient client) { // Fixture setup Mock.Get(parser) .Setup(c => c.ParseAsync <object>(It.IsAny <JsonSerializerSettings>(), It.IsAny <HttpResponseMessage>())) .ThrowsAsync(exception); // Exercise system try { await client.SendAsync <object>(request); } catch { } // Verify outcome Mock.Get(interceptor) .Verify(i => i.OnException(It.Is <ExceptionContext>( ctx => ctx.HttpRequest == request && ctx.Exception == exception )), Times.Once); }
public void ParserExceptionsBubbleUp( HttpRequestMessage request, JSendParseException exception, [Frozen] IJSendParser parser, [Greedy, MockHttpClient] JSendClient client) { // Fixture setup Mock.Get(parser) .Setup(p => p.ParseAsync <object>(It.IsAny <JsonSerializerSettings>(), It.IsAny <HttpResponseMessage>())) .ThrowsAsync(exception); // Exercise system and verify outcome client .Awaiting(c => c.SendAsync <object>(request)) .ShouldThrow <JSendParseException>(); }
public async Task Executes_OnReceived_BeforeParsingResponse( HttpRequestMessage request, [Frozen] MessageInterceptor interceptor, [Frozen] IJSendParser parser, [Greedy, MockHttpClient] JSendClient client) { // Fixture setup Action verifyResponseHasntBeenParsed = () => Mock.Get(parser) .Verify( p => p.ParseAsync <object>(It.IsAny <JsonSerializerSettings>(), It.IsAny <HttpResponseMessage>()), Times.Never); Mock.Get(interceptor) .Setup(i => i.OnReceived(It.IsAny <ResponseReceivedContext>())) .Callback(verifyResponseHasntBeenParsed); // Exercise system await client.SendAsync <object>(request); // Verify outcome Mock.Get(interceptor) .Verify(i => i.OnReceived(It.IsAny <ResponseReceivedContext>()), Times.Once); }