예제 #1
0
        /// <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)));
 }