Тестирование функции
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 01.02.11 19:46
Оценка:
Ниже приведена функция, её назначение заменять UncategorizedCommonClientFault на типизированые фолты, функционал нужен в силу того, что сервер писаный на java бросает Soap-фолты как попало. Писать тест на каждый код ошибки мне кажется странной идеей. Коды и прочая логика будет пополняться.

Вопрос — какие юнит-тесты нужно написать для этой функции ? Тесты для ReCreateFault, ExtractDetail, ExtractErrorCode уже написаны. Нужно ли вообще юнит-тесты для этой функции писать, м.б. хватит интеграционных ?

public static void ReThrowUncategorized(Exception ex)
        {
            var detail = ex.ExtractDetail<UncategorizedCommonClientFault>();

            if (detail == null)
                return;

            var message = ex.Message + " " + detail.Message;

            if (message.Contains("Error 60016") ||
                message.Contains("Error 60020") ||
                message.Contains("InvalidSessionFault"))
            {
                throw ReCreateFault<InvalidSessionFault>(detail, detail.Message);
            }

            if (ex.Message.ToLower().Contains("invalid username"))
            {
                throw ReCreateFault<InvalidUserFault>(detail, "Please enter a valid user ID.");
            }

            string atlasErrorCode = ExtractErrorCode(message);
            switch (atlasErrorCode)
            {
                case "60001": 
                case "60004": 
                    throw ReCreateFault<InvalidCredentialsFault>(detail, "Please enter a valid user ID and password.");
                case "60002": 
                    throw ReCreateFault<InvalidCredentialsFault>(detail, "Your user ID can no longer be used for research. Please contact Customer Service.");
                case "60030": 
                    throw ReCreateFault<SubscriptionErrorFault>(detail, "Service could not log you in at this time. Please try again later.");
                case "60007": 
                case "60116": 
                    throw ReCreateFault<SubscriptionErrorFault>(detail, "The subscription for this account is not currently valid. Please contact Customer Service.");
                case "60003": 
                    throw ReCreateFault<InvalidUserFault>(detail, "This User ID can no longer access service from a remote location. To renew the User ID for remote access, please log in from your primary location.");
            }
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.