Какой правильный подход для тестирования интеграции API, построенный на ASP.NET MVC? - PullRequest
1 голос
/ 16 мая 2011

Я строю API, который использует OAuth2.Я успешно провёл модульное тестирование всех отдельных частей, но теперь мне нужно провести интеграционное тестирование.По сути, я хочу иметь возможность проверять ответы http с сервера, чтобы убедиться, что все в порядке.В идеале я хотел бы иметь возможность развернуть сервер веб-разработки в Visual Studio для размещения сайта, а затем сделать к нему кучу запросов и проверить результаты.

Каков наилучший подход к этому и какие инструменты мне следует использовать?

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Создание сервера непрерывной интеграции

  1. установка TeamCity
  2. установить Ruby
  3. установка Альбакор

Сценарий граблей должен сделать следующее 1. проверить файлы из системы контроля версий 2. строить локально 3. развернуть API для локального IIS 4. Запустите интеграционные тесты для localhost api

.

Это начало звучать знакомо. Смотри здесь

Вот пример из моих интеграционных тестов API. Дайте мне знать, если вы хотите получить более подробную информацию.

Я использую mspec.

Я запускаю его вместо localhost, нашего промежуточного сервера и нашего производственного сервера (ограниченный набор тестов), чтобы убедиться, что все http-соединения работают.

public class _GET_no_criteria : specs_for_endpoint_test
{
    Establish context = () =>
    {
        Uri = C.Endpoint;
        Querystring = "";
        ExecuteJsonGetRequest();

        SetValidId();
    };

    It should_have_status_code_200_ok =()=>
        IsHttp_200OK();

    It should_have_categories = () =>
    {
        responseText.ShouldNotBeEmpty();
        PutsAll(responseText);
    };
}

Из базового класса

 public static void ExecuteGetRequest(string contentType)
        {
            httpcontext = HttpContext.Current;
            request = (HttpWebRequest)WebRequest.Create(BaseUri + Uri + Querystring);
            request.Method = C.HTTP_GET;          
            request.ContentType = contentType;
            request.Headers[C.AUTHORIZATION] = token;

            // GetResponse reaises an exception on http status code 400
            // We can pull response out of the exception and continue on our way            
            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = (HttpWebResponse) ex.Response;
            }

            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                responseText = reader.ReadToEnd();
                reader.Close();
            } 
        }

        public static void ExecuteJsonGetRequest()
        {
            ExecuteGetRequest(C.CONTENT_JSON);
        }
2 голосов
/ 16 мая 2011

Я бы порекомендовал вам развернуть ваше приложение на промежуточном сервере (может быть, даже как часть процесса сборки, чтобы это было действие одним нажатием кнопки), а затем запустить клиентские запросы HTTP на этом сервере, как настоящийКлиент .NET должен использовать ваш API.

...