/// <summary> /// Performs server method calling /// </summary> public async Task <TestCallDetails <TRes> > Call <TRes>(Expression <Func <TApiContact, Task <TRes> > > invoker) { CallDetails <TRes> details; Exception respProcError = null; try { details = await _apiClient.Call(invoker).GetDetailed(); } catch (DetailedResponseProcessingException <TRes> e) { respProcError = e.InnerException; details = e.CallDetails; } var resDetails = new TestCallDetails <TRes>(details) { ResponseProcessingError = respProcError != null, ProcessingError = respProcError }; Output?.WriteLine(resDetails.ToTestDump <TRes, TApiContact>()); return(resDetails); }
/// <summary> /// Gets web-call dump for test output /// </summary> /// <typeparam name="TRes">call result</typeparam> /// <param name="contractType">API contract</param> /// <param name="call">web call</param> /// <returns>string dump</returns> public static string ToTestDump <TRes>(this TestCallDetails <TRes> call, Type contractType = null) { if (call == null) { throw new ArgumentNullException(nameof(call)); } var sb = new StringBuilder(); WriteToString <TRes>(call, sb, contractType); if (call.ResponseProcessingError) { var contractName = GetContractName(contractType); sb.AppendLine(""); sb.AppendLine($"===== RESPONSE PROC ERROR ({contractName}) ====="); sb.AppendLine(""); sb.AppendLine(call.ProcessingError.ToString()); sb.AppendLine("===== RESPONSE PROC ERROR END ====="); } return(sb.ToString()); }
/// <summary> /// Gets web-call dump for test output /// </summary> /// <typeparam name="TRes">call result</typeparam> /// <typeparam name="TContract">API contract</typeparam> /// <param name="call">web call</param> /// <returns>string dump</returns> public static string ToTestDump <TRes, TContract>(this TestCallDetails <TRes> call) { return(ToTestDump(call, typeof(TContract))); }